Javascript 向具有多对多关联的SailsJS模型添加重复项

Javascript 向具有多对多关联的SailsJS模型添加重复项,javascript,many-to-many,sails.js,sails-mongo,Javascript,Many To Many,Sails.js,Sails Mongo,我有两个模型,items和order,它们有多对多的关联。在过去的5个小时里,我一直在想办法向订单中添加多个items对象,包括重复项 如果这些项目是独一无二的,那么效果会非常好,但如果我尝试以下方式: order.items.add([12, 13, 12, 12]); order.save(); 它只会节省12,13。重复项将被忽略,如果您想订购任何项目中的多个,则不太好 任何建议都会有帮助。DB scheme中的多对多关联是在一个表中的任何记录到另一个表中的任何记录之间创

我有两个模型,items和order,它们有多对多的关联。在过去的5个小时里,我一直在想办法向订单中添加多个items对象,包括重复项

如果这些项目是独一无二的,那么效果会非常好,但如果我尝试以下方式:

    order.items.add([12, 13, 12, 12]);
    order.save();
它只会节省12,13。重复项将被忽略,如果您想订购任何项目中的多个,则不太好


任何建议都会有帮助。

DB scheme中的多对多关联是在一个表中的任何记录到另一个表中的任何记录之间创建关系,当然它总是唯一的,因为
12
is已经与该
顺序
记录有关联

解决方案是,使用额外的模型来实现这一点。例如,在
models
文件夹中:

Order.js OrderItem.js Item.js
因此,从
Order
模型中,您可以添加一些
OrderItem
,这是一个表示
Order
Item
之间关系的模型,从
订单
的角度来看,
订单项目
是唯一的,尽管其记录下的项目可能是相同的。

一种方法是创建一个新模型来维护多对多关联,另一种方法是在订单模型中添加一个名为“数量”的列每当您再次添加相同的项目时,都会增加它。

是的,这是一个很好的观点,但我试图避免这样做,因为sails自动创建一个联接表。我知道如果我查看使用MySQL的staging,它确实有由Sails创建的OrderItems表来处理这个问题。原来它附带的Sails disk db有这个问题,但是如果我使用我的Mongo或MySQL连接,它工作起来很有魅力。但问题是,它不能依赖基本/标准的多对多db关联,正如我提到的,
12
is已经与您提到的
order
关联。它需要一个介于之间的
东西作为
订单和项目之间的桥梁,可以从
订单
的角度表示唯一的值。
module.exports = {

  attributes: {
    items : {collection: 'OrderItem', via: 'order'}
  }
};
module.exports = {

  attributes: {
    order : {model: 'Order'},
    item  : {model: 'Item'}
  }
};
module.exports = {

  attributes: {
  }
};