我的模型和序列化程序有问题。我查看了文档,找不到解决方案。我的应用程序连接到django rest api。
Django回复:
{
"id": 1,
"url": "http://localhost:8000/users/1/",
"username": "username",
"email": "xxx@email.com",
"is_staff": true
}
模特:
export default DS.Model.extend({
url : DS.attr('string'),
username : DS.attr('string'),
email : DS.attr('string'),
});
我已使用序列化程序修改了响应以包含“数据”:
export default DS.JSONAPISerializer.extend({
primaryKey: 'id',
normalizeFindRecordResponse(store, type, payload, id) {
console.log('payload',payload)
return {
data: {
'id': id,
'url': payload.url,
'username': payload.username,
'email': payload.email,
}
} ;
}
});
路线:
export default Ember.Route.extend({
model() {
return this.store.findRecord('users', 1);
}
});
该路线的另一个版本同样错误:
export default Ember.Route.extend({
model() {
this.store.findRecord('users', '1').then(function(user){
console.log('user', user);
}).catch(function(e){
console.log('e', e);
});
}
});
最后,Ember检查器具有模型,但所有值都未定义,控制台上的“str未定义”。
答案 0 :(得分:0)
1. normalizeFindRecordResponse
未返回有效的JSONAPI格式,
以下是有效格式
{
"data": {
"type": "articles",
"id": "1",
"attributes": {
// ... this article's attributes
}
}
}
如您所见,您遗漏了type
,attributes
密钥。
2.您的模型文件名应为user.js
单数
3。this.store.findRecord('users', 1)
- 在这里你需要使用模型的单一形式this.store.findRecord('user', 1)
4.在你的另一次尝试中,你错过了模型钩子中的return语句。