gpt4 book ai didi

javascript - 如何在 Ember-data 中的一个 JSON 请求中加载两个模型?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:48 26 4
gpt4 key购买 nike

使用 Ember-data 和 Ember.js,我试图用一个 JSON 请求加载两个模型。这些模型具有类似于此的关系:

App.Person = DS.Model.extend({
name: DS.attr('string'),
dogs: DS.hasMany('App.Dog'),
});

App.Dog = DS.Model.extend({
name: DS.attr('string'),
owner: DS.belongsTo('App.Person'),
});

我的服务器正在发送这样的 JSON:

{
"dog": {
"id": 1,
"name": "Fido",
"owner": {
"id": 1,
"name": "John Smith",
"dogs": [1]
}
}
}

…然而,Ember-data 仍然向我的服务器发送请求(使用 findQuery)以尝试获取所有者 JSON。

我有一个 jsFiddle 设置来演示它 here .要观察问题的发生,您需要转到此链接以激活路由/模板:

http://fiddle.jshell.net/6kQ8s/2/show/#/dog/1

我没有故意在我的适配器中定义 findQuery(),因为我不需要它来获取我已经发送的数据……对吗?

有谁知道我在这里做错了什么?

最佳答案

我正在执行以下操作(使用 ember-data 修订版 8)

App.Dog = DS.Model.extend({
name: DS.attr('string'),
owner: DS.belongsTo('App.Person', { embedded: true }),
});

此外,我必须告诉序列化器为这个关系加载一个映射。虽然这不是必需的,但我正在使用我自己的 DS.Serializer 子类。初始化时序列化程序为 Person 类加载映射的时间,该映射指定应加载嵌入式关系。

  App.WOSerializer = DS.Serializer.extend({
init: function(){
this._super();
this.map(App.Dog, {
person: {
embedded: 'load'
}
});
});

由提问者编辑:

需要在适配器中初始化序列化器。

App.adapter = DS.Adapter.create({
// ...
serializer: App.WOSerializer.create()
});

关于javascript - 如何在 Ember-data 中的一个 JSON 请求中加载两个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13526470/

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