2016-03-22 13 views
9

Tôi mới sử dụng Ember và tôi không thể tìm thấy giải pháp cho vấn đề của mình. Tôi đã đọc các câu hỏi ở đây trong ngăn xếp và trong các diễn đàn ember khác, nhưng không ai trong số họ dường như làm việc cho tôi.Xác nhận không thành công: Bạn phải bao gồm 'id' cho tài khoản trong đối tượng được chuyển tới 'push' Ember.js v-2.4

Tôi đang cố gắng tạo biểu mẫu đăng ký đơn giản. Tôi nên lưu ý rằng đối với phụ trợ tôi sử dụng django. Đây là mã của tôi:

Server Response:

[{"username":"user1","password":"123","email":"[email protected]"},   
{"username":"user2","password":"456","email":"[email protected]"}] 

Ember mẫu:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    username: DS.attr(), 
    password: DS.attr(), 
    email: DS.attr() 
}); 

Ember Adaptor: nhập DS từ 'ember dữ liệu';

export default DS.RESTAdapter.extend({ 
    host: '/api', 
    contentType: 'application/json', 
    dataType: 'json', 

    headers: { 
     username: 'XXXX', 
     password: 'XXXX' 
    } 
}); 

Ember Serializer:

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: '_id' 
}); 

Ember Route: nhập khẩu Ember từ 'ember';

export default Ember.Route.extend({ 
    model() { 
     return this.store.findAll('account'); 
    } 
}); 

Ember Bộ điều khiển:

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

    actions: { 

    signup(){ 
     console.log('My username is: ', this.get('username')); 
     console.log('My password is: ', this.get('password')); 
     console.log('My email is: ', this.get('email')); 

     var account = this.store.createRecord('account', { 
       username: this.get('username'), 
       password: this.get('password'), 
       email: this.get('email') 
     }); 

     account.save(); 

    } 
    } 
}); 

Với thi này, tôi nhận được lỗi nói trên. Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn bạn trước.

Trả lời

12

backend của bạn nên phản ứng với một id, tức là

{"id":123,"username":"user1","password":"123","email":"[email protected]"} 

Bạn không thực sự cần phải sử dụng serializer, trừ khi bạn muốn có một lĩnh vực cụ thể để hoạt động như một id. Vì vậy, trong ví dụ trên, ember dữ liệu mong chờ backend của bạn để trở

{**"_id":123**,"username":"user1","password":"123","email":"[email protected]"} 

Hoặc bạn có thể làm điều gì đó như thế này:

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: 'username' 
}); 

Và sử dụng tên đăng nhập như một id.

+0

Cảm ơn rất nhiều cho câu trả lời của bạn Igor, tôi chỉ không thể tìm ra những gì các máy chủ được sử dụng như là một id. – Jack

3

Tôi đã sửa lỗi của mình. Vấn đề là backend đã sử dụng tên người dùng là id nên ember không thể nhận ra nó.

Mã cố định cho Ember Serializer là:

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: 'username' 
}); 
Các vấn đề liên quan