我是Ember的新手,我无法找到解决问题的方法。我已经在堆栈和其他ember论坛中阅读了这些问题,但它们似乎都不适用于我。
我正在尝试创建一个简单的注册表单。我应该注意,对于后端我使用django。 这是我的代码:
服务器响应:
[{"username":"user1","password":"123","email":"user1@example.com"},
{"username":"user2","password":"456","email":"user2@example.com"}]
Ember模特:
import DS from 'ember-data';
export default DS.Model.extend({
username: DS.attr(),
password: DS.attr(),
email: DS.attr()
});
Ember适配器: 从'ember-data'导入DS;
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: 从'余烬'中导入Ember;
export default Ember.Route.extend({
model() {
return this.store.findAll('account');
}
});
Ember控制器:
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();
}
}
});
通过这种实现,我得到了上述错误。任何帮助,将不胜感激。提前谢谢。
答案 0 :(得分:15)
你的后端应该回复一个id,即
{"id":123,"username":"user1","password":"123","email":"user1@example.com"}
除非您希望特定字段充当ID,否则您并不需要使用序列化程序。因此,在上面的示例中,ember-data会期望您的后端返回
{**"_id":123**,"username":"user1","password":"123","email":"user1@example.com"}
或者你可以这样做:
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
primaryKey: 'username'
});
并使用您的用户名作为ID。
答案 1 :(得分:3)
我修正了错误。问题是后端使用用户名作为id,因此ember无法识别它。
Ember Serializer的固定代码是:
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
primaryKey: 'username'
});