使用多对多关联向SailsJS模型添加重复项

时间:2015-07-05 15:36:04

标签: javascript many-to-many sails.js sails-mongo

我有两个模型,项目和订单,它们具有多对多关联。在过去的5个小时里,我一直试图做的是找出一种方法,将多个项目对象添加到包含重复项目的订单中。

如果这些项目是唯一的,那么它的效果非常好,但如果我尝试这样的话:

    order.items.add([12, 13, 12, 12]);
    order.save();

它只会保存12,13。重复项将被忽略,如果您想订购任何项目中的多个项目,则不会太好。

任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:2)

DB方案中的多对多关联是创建从表到任何记录到另一个表的任何记录之间的关系,当然它始终是唯一的,因为12已经与{{1}有关联记录。

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

Order.js

models

OrderItem.js

module.exports = {

  attributes: {
    items : {collection: 'OrderItem', via: 'order'}
  }
};

Item.js

module.exports = {

  attributes: {
    order : {model: 'Order'},
    item  : {model: 'Item'}
  }
};

因此,从module.exports = { attributes: { } }; 模型中,您可以添加一些Order,它是表示OrderItemOrder之间关系的模型,而Item是唯一的OrderItem观点虽然它下面的项目可能是相同的。

答案 1 :(得分:0)

一种方法是创建一个新模型来维护多对多关联,但另一种方法是在Order模型中添加一个名为“Quantity”的列,并在您再次添加相同项时递增它