我得到"断言失败:你必须在传递给`push`"的哈希中包含一个`id`。查询API时

时间:2014-08-27 16:44:19

标签: json node.js rest ember.js express

我必须阅读有关我的问题的堆栈溢出的每个问题,并且没有找到解决方案。 我对Ember和Node很新,所以请耐心等待。

服务器以这种格式响应:

{
"_id" : "53fddf59d72f9b4d3a3e164a"
"about" : [
    {"from" : "foo"},
    {"text" : "bar"},
    ... ]
}

我的模型看起来像这样:

App.About = DS.Model.extend({
    from : DS.attr('string'),
    text : DS.attr('string'),
    ...
}

适配器&串行器:

App.ApplicationAdapter = DS.RESTAdapter.extend({
    host: 'http://localhost:3000'
});

App.ApplicationSerializer = DS.JSONSerializer.extend({
    primaryKey: '_id'
});

我的路线:

App.AboutRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('about');
    }
});

使用把手:

<script type="text/x-handlebars" data-template-name="about">
    <p>{{from}}</p>
</script>

路由将呈现,但控制台会显示错误:

  

DEBUG:------------------------------- ember.js:3285
  DEBUG:Ember:1.3.0 ember.js:3285
  DEBUG:Ember数据:1.0.0-beta.5 ember.js:3285
  调试:把手:1.3.0 ember.js:3285
  DEBUG:jQuery:1.10.2 ember.js:3285
  DEBUG:------------------------------- ember.js:3285
  生成 - &gt; route:application Object {fullName:“route:application”} ember.js:3285
  断言失败:您必须在传递给id ember.js的哈希中包含push:3285
  生成 - &gt; controller:about Object {fullName:“controller:about”} ember.js:3285
  过渡到'约'

我做错了什么?!


更新

已经接受了Kingpin2k的答案,即使这不是我最终使用的确切格式。有关详细信息,请参阅注释。

1 个答案:

答案 0 :(得分:3)

您的格式应为复数类型,以及各个记录的ID。

 {
  "abouts" : [
    {
     "from" : "foo",
     "text" : "bar",
     "_id" : "53fddf59d72f9b4d3a3e164a"
    },
    {
     "from" : "foo2",
     "text" : "bar2",
     "_id" : "53fddf59d72f9b4d3a3e164k"
    },
    ... ]
 }