在ember中检索单个记录

时间:2014-06-01 00:20:41

标签: ember.js coffeescript ember-data

长话短说,我试图在ember中检索单个记录(更具体地说是登录后包含重要信息的用户对象)。

但是,当我尝试使用@store.find "user", query时,我会收到Error: Assertion Failed: The response from a findQuery must be an Array, not undefined

有什么想法吗?

1 个答案:

答案 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');
});