gpt4 book ai didi

ember.js - 如何将 Ember 数据与嵌套资源结合使用

转载 作者:行者123 更新时间:2023-12-02 19:23:05 24 4
gpt4 key购买 nike

我的应用程序后端有多个资源。每个资源都会公开一个模型。

所有其他资源的入口点都是通过User 模型。我的意思是,给定一个User,我们可以找到BlogPost。给定一个 BlogPost,我们可以找到 Comments 等。

用 Ember 术语来说,我们可以说:

User hasMany BlogPost
BlogPost hasMany Comment
Comment belongsTo BlogPost

通过后端公开以下形式的 REST API:

GET /api/v1/users/1
GET /api/v1/users/1/blog_posts/1
GET /api/v1/users/1/blog_posts/1/comments/1

我正在尝试弄清楚如何使用 Ember Data 来获取属于某个 User 的某个 BlogPostComment

据我所知,如果我为 Comment 定义一个典型的 Ember 模型:

App.Comment = DS.Model.extend({
...
blogPost: DS.belongsTo('App.BlogPost')
});

CommentRoute 中我有以下内容:

var CommentRoute = MessageRoute.extend({
model: function(params) {
this.store.find('comment')
},

请求发送至:

/api/v1/comments

我什至不知道从哪里开始,以便 Ember Data 使用以下形式的 URL:

GET /api/v1/users/1/blog_posts/1/comments/1

我见过几个类似的问题(请参阅下面的链接),但还没有看到其中任何一个的明确答案。其中大多数已经有近一年的历史了,当时 ember-data 可能还没有这样的功能(或者在其中一些线程中是这样声明的)。

再次请求确认ember-data是否有这样的功能。

类似问题:

  1. Ember Data nested Models
  2. Canonical way to load nested resources
  3. Deep nested routes

最佳答案

处理它的最好方法是使用链接。如果您不想这样做,那么它远不受支持,并且很难入侵(管道只是不容易传递信息)。就我个人而言,我建议在这种情况下滚动您自己的适配器 ( Ember without Ember Data )。

App.Foo = DS.Model.extend({
name: DS.attr('string'),
bars : DS.hasMany('bar', {async:true})
});

App.Bar = DS.Model.extend({
foo: DS.belongsTo('foo'),
});

json:

{
id: 1,
name: "bill",
links: {
bars: '/foo/1/bars'
}
}

示例:http://emberjs.jsbin.com/OxIDiVU/971/edit

关于ember.js - 如何将 Ember 数据与嵌套资源结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com