"str is undefined" 在查找记录上
"str is undefined" on findRecord
我对模型和序列化程序有疑问。我查看了文档,但找不到解决方案。我的应用程序已连接到 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'),
});
我已经使用序列化程序修改了响应以包含 "data":
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 inspector 有了模型,但控制台上的所有值都未定义并且 "str is undefined"。
Image of ember inspector
1.normalizeFindRecordResponse
不是 return 有效的 JSONAPI 格式,
以下是有效格式,
{
"data": {
"type": "articles",
"id": "1",
"attributes": {
// ... this article's attributes
}
}
}
如您所见,您缺少 type
、attributes
键。
2.Your 模型文件名应该是 user.js
单数。
3.this.store.findRecord('users', 1)
- 这里你需要使用单数形式的模型所以this.store.findRecord('user', 1)
4.In 你的另一次尝试你错过了模型挂钩中的 return 语句。
我对模型和序列化程序有疑问。我查看了文档,但找不到解决方案。我的应用程序已连接到 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'),
});
我已经使用序列化程序修改了响应以包含 "data":
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 inspector 有了模型,但控制台上的所有值都未定义并且 "str is undefined"。
Image of ember inspector
1.normalizeFindRecordResponse
不是 return 有效的 JSONAPI 格式,
以下是有效格式,
{
"data": {
"type": "articles",
"id": "1",
"attributes": {
// ... this article's attributes
}
}
}
如您所见,您缺少 type
、attributes
键。
2.Your 模型文件名应该是 user.js
单数。
3.this.store.findRecord('users', 1)
- 这里你需要使用单数形式的模型所以this.store.findRecord('user', 1)
4.In 你的另一次尝试你错过了模型挂钩中的 return 语句。