gpt4 book ai didi

javascript - fetchRelated 不获取相关

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:01 28 4
gpt4 key购买 nike

一段时间以来一直在尝试启动并运行它。基本上我有一个 rest api 作为返回 json 的后端,一切都很好。

我遇到的问题是主干关系。我确定我刚刚得到了一些东西错了,但我已经在网上搜索了一段时间,找不到任何帮助。

我想了解模型“职业”和“武器”之间的关系。这是我的代码:

Profession = Backbone.RelationalModel.extend({
urlRoot: '../api/professions',

relations: [{
type: Backbone.HasMany,
key: 'weapons',
relatedModel: 'Weapon',
collectionType: 'Weapons',
reverseRelation: {
key: 'profession',
includeInJSON: 'id',
keySource: 'profession_id'
}
}]
});

Weapon = Backbone.RelationalModel.extend({
urlRoot: '../api/weapons'
});
Weapons = Backbone.Collection.extend({
model: Weapon,

url: function(models){
return '../api/weapons';
}
});

调用这些 api 端点会返回:

{name: "Profession1", id: 1}

[{name: "Weapon1", profession_id: 1}, {name: "Weapon2", profession_id: 1}]

所以,如果我理解正确的话,profession.fetchRelated('weapons') 应该向武器收集的 url 发送一个 httprequest 并拉取 profession_id 为 1 的对象。但是没有任何反应当我运行 profession.fetchRelated('weapons')

最佳答案

So, if i understand correctly a profession.fetchRelated('weapons') should send an httprequest to the url for the weapons collection and pull the object which have a profession_id of 1. But nothing happens when i run profession.fetchRelated('weapons')

这不是我理解 Backbone-relational 的工作方式 - 需要注意的是我正在使用旧版本,并且尚未研究最新版本。

据我了解,Backbone-relational 需要看起来与您的 API 响应不同的数据。

我认为 Backbone-relational 希望在父模型响应中引用嵌套模型,或者完全嵌套:

{
name: "Profession1",
id: 1,
weapons: [
{name: "Weapon1", profession_id: 1},
{name: "Weapon2", profession_id: 1}
]
}

在这种情况下,它将完全填充嵌套模型。

或者,作为引用:

{
name: "Profession1",
id: 1,
weapons: ['weapon1','weapon2']
}

在这种情况下,Backbone-relational 将在内部存储相关的键,但呈现一个空集合。然后,您将使用 fetchRelated 来获取相关模型的完整数据:

assassin.fetchRelated('weapons')

请求 ID 为 'weapon1''weapon2' 的武器,可以作为单独的请求,或者如果您的 API 接受集合请求,则为单个请求,期待这样的回应:

{id: 'weapon1', name: "Weapon1", profession_id: 1}

我不知道是否有一种快速、内置的方法来处理您的 API 响应,除了编写自定义函数。

关于javascript - fetchRelated 不获取相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715185/

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