gpt4 book ai didi

backbone.js - 主干关系有许多最佳实践

转载 作者:行者123 更新时间:2023-12-01 21:50:37 26 4
gpt4 key购买 nike

我是 Backbone 关系新手,我不确定使用 HasMany 的正确方法是什么。

我有一个 Parent 模型,其中有许多子元素(“许多”是指数千个子元素)。为了避免性能问题,我通过外键查询子项:/child/?parent=1,而不是在 Parent 中创建一个巨大的 child_ids 列表。但这似乎不是 Backbone 关系的工作方式。

所以我想知道处理这个问题的正确方法是什么。

1,更改我的 json api 以包含父级中的子级 id 列表,然后按照 Backbone 关系推荐发送数千个 id:

url = function(models) {
return '/child/' + ( models ? 'set/' + _.pluck( models, 'id' ).join(';') + '/' : '');
}
// this will end up with a really long url: /child/set/1;2;3;4;...;9998;9999

2、重写Backbone-relational中的很多方法,让它处理这种情况。我的第一个想法是:

relations: [{
collectionOptions: function(model){
// I am not sure if I should use `this` to access my relation object
var relation = this;
return {
model: relation.relatedModel,
url: function(){
return relation.relatedModel.urlRoot + '?' + relation.collectionKey + '=' + model.id;
}
}
}
}]
// This seems work, but it can not be inherent by other model
// And in this case parent will have am empty children list at beginning.
// So parent.fetchRelated() won't fetch anything, I need call this url my self.

3、仅使用Backbone-relational作为Store,然后使用Collection来管理关系。

4、其他一些神奇的方式或模式或 Backbone 框架

感谢您的帮助。

最佳答案

这是我当前项目的解决方案。请注意,项目 有许多评论、事件、文件和视频。这些关系及其反向关系在这些模型上定义:

Entities.Project = Backbone.RelationalModel.extend({
updateRelation: function(relation) {
var id = this.get('id'),
collection = this.get(relation);

return collection.fetch({ data: $.param({ project_id: id }) });
}
});

我将 REST 端点配置为采用充当连续“WHERE”子句的参数。因此 project.updateRelation('comments') 将向 /comments?project_id=4 发送请求 我在服务器端有一些进一步的逻辑来过滤掉用户的内容无权看见。 (Laravel 后端,顺便说一句)

关于backbone.js - 主干关系有许多最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15954406/

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