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

时间:2015-08-05 19:22:16

标签: javascript backbone.js backbone-relational

我从服务器JSON创建骨干集合。数据来自mongo,因此每个项目具有相同的对象,并且主干删除此重复项。这对我来说是不受欢迎的行为,我无法找到解决方案来保留这种情况。取款后,我的商品只有' section1'在secound对象中(id:2)。我在第一个对象中也需要相同的部分。例如,我的服务器响应是:

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'
                    }
                }
            ]
});

1 个答案:

答案 0 :(得分:0)

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

事实上,来自docs

  

<强> Backbone.HasMany

     

定义HasMany关系。 定义reverseRelation时,类型   将是HasOne

您的选择:

  1. 创建HasOne SectionHasOne Item的{​​{1}}模型。有人发布了这种设置http://jsfiddle.net/mmacaula/XaESG/2/
  2. 的小提琴
  3. 使用其他库 - 或您使用的库的扩展名,例如https://github.com/jj-studio/Backbone-JJRelational
  4. Section模型键添加属性,使每个属性都唯一。但这并不是实现你想要做的事情的好方法。
  5. 这是一个非常好的参考答案:Implementing a Many-to-Many relationship with Backbone-Relational