1

这个小提琴的一小部分:http: //jsfiddle.net/v2t67/显示在我的问题中,但我的问题是我无法查询子模型的 json,即评论模型。到目前为止,我可以使用下面的查询从 chrome 开发人员控制台访问父对象(发布模型),并从包含父对象的结果中,在控制台中,我可以单击它,我将看到嵌入的注释,如图所示在此屏幕截图中:http: //imgur.com/3WL4I

那么如何使用 objectAt(0).toJSON() 查询评论以直接返回它而不需要单击父对象才能看到它?

非常感谢。

 yt = App.store.findAll(App.Post)
 yt.objectAt(0).toJSON()   //to display the json for post

App.Comment = DS.Model.extend({
    content: DS.attr('string'),
    post: DS.belongsTo('App.Post')
});


App.Post = DS.Model.extend({
    body: DS.attr('string'),
    comments: DS.hasMany('App.Comment', { embedded: true } )
});
4

1 回答 1

1
 App.Comment = DS.Model.extend({
   content: DS.attr('string'),
   post: DS.belongsTo('App.Post')
 });


 App.Post = DS.Model.extend({
   body: DS.attr('string'),
   comments: DS.hasMany('App.Comment', { embedded: true } )
 });

完整代码见:** http://jsfiddle.net/v2t67/ **

从源头阅读关联测试后,我找到了一种方法。关联测试在这里:** https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/associations_test.js **

仍然坚持上面的两个模型作为我们的例子,我们可以通过执行以下操作来查询嵌入式模型(评论模型)的 json 数据:

      **Approach 1**

 query = App.store.find(App.Post,  1)
 query.get('comments').objectAt(0).toJSON()

在进行进一步检查时,我发现如果您想要父模型(后模型)的 json,上述方法将不起作用。这就是我为此使用json的方式:

      **Approach 2**

 query = App.store.find(App.Post)
 query.objectAt(0).toJSON()

你会得到一个TypeError: Object has no method 'objectAt',如果你尝试使用方法 1 获取 Post 模型的 json 数据,你会得到TypeError: Cannot call method 'objectAt' of undefined,如果你尝试获取使用方法 2 的嵌入式模型的 json 数据。

如果我发现新的东西,我会更新这个。

           **UPDATE**

您可以通过将{associations: true}传递给toJSON() 函数来获取方法 2 以无错误地返回嵌入式模型的 json 数据,如下所示:

 query = App.store.find(App.Post)
 query.objectAt(0).toJSON({associations: true})
于 2012-08-25T22:10:05.003 回答