如何不删除 backbone 集合中的重复项

How to not remove duplicates in collection in backbone

我从服务器 JSON 创建了 backbone 集合。数据来自 mongo,因此每个项目都具有相同的对象,并且 backbone 删除此重复项。这对我来说是不受欢迎的行为,所以我找不到保留此实例的解决方案。获取后,我的项目在第二个对象 (id:2) 中只有 'section1'。我在第一个对象中也需要相同的部分。例如我的服务器响应是:

items:  [{
  id:1,
  sections: [{
    id: 1.//this object is removed
    name: 'section1'
   }] 
}, {
  id: 2,
  sections: [{
    id:1.
     name: 'section1'
  }]
}]

我的截面模型是:

Section = Backbone.RelationalModel.extend({
});

和物品型号:

Item = Backbone.RelationalModel.extend({
            relations: [
                {
                    'type': 'HasMany',
                    'key': 'sections',
                    'relatedModel': 'Section',
                    'includeInJSON': 'id',
                    'reverseRelation': {
                        'key': 'item',
                        'includeInJSON': 'id'
                    }
                }
            ]
});

如果我没记错的话,这个插件不支持多对多。所以,发生的事情是它将 Section 1 附加到第一个 Item,然后将其附加到第二个并从第一个移除它。

其实从docs:

Backbone.HasMany

Defines a HasMany relation. When defining a reverseRelation, the type will be HasOne.

您的选择:

  1. 创建 SectionItem 模型 HasOne SectionHasOne Item。有人用这种设置 http://jsfiddle.net/mmacaula/XaESG/2/
  2. 发布了 fiddle
  3. 使用另一个库 - 或者您使用的库的扩展,例如 https://github.com/jj-studio/Backbone-JJRelational
  4. 将 属性 添加到 Section 模型键,使每个键都独一无二。不过,这不是实现您想要做的事情的好方法。

这里有一个很好的参考答案:Implementing a Many-to-Many relationship with Backbone-Relational