长话短说,我试图在ember中检索单个记录(更具体地说是登录后包含重要信息的用户对象)。
但是,当我尝试使用@store.find "user", query
时,我会收到Error: Assertion Failed: The response from a findQuery must be an Array, not undefined
有什么想法吗?
答案 0 :(得分:0)
假设您正在查询user
类型,并且上面的query
是一个POJO,您的代码可能如此:
var usersPromise = store.find('user', {foo:'bar', bla: 'baz'});
来自您服务器的响应看起来像这样(注意:users
是复数形式),这就是您收到错误(ember.js Error: Assertion Failed: The response from a findAll must be an Array, not undefined)的原因。
{
users: [
{
id: 1,
name: 'Santa Clause'
}
]
}
由于您通过POJO查询,因此Ember假设有0+结果。在promise解决后,您可以从中返回第一个对象,因为该集合只有一个。
usersPromise.then(function(users){
return users.get('firstObject');
});
所以在你的情况下,你可能会做这样的事情
this.store.find('user', {foo:'bar', bla: 'baz'}).then(function(users){
return users.get('firstObject');
});