我定义了以下模型:
var Order = sequalize.define(
"order",
{
id: {
type: Sequelize.STRING,
primaryKey: true,
},
menuId: {
type: Sequelize.UUID,
field: "menu_id",
},
},
{
timestamps: false,
}
);
Item.belongsToMany(Order, { through: OrderItem });
Order.belongsToMany(Item, { through: OrderItem });
和var OrderItem = sequalize.define(
"order_item",
{
orderId: {
type: Sequelize.UUID,
field: "order_id",
},
itemId: {
type: Sequelize.UUID,
field: "item_id",
},
count: {
type: Sequelize.INTEGER,
field: "count",
},
},
{
timestamps: false,
freezeTableName: true,
}
);
我试图弄清楚如何在不创建项目的情况下添加带有项目的订单,而只是将它们添加到关系中。我有这个订单的初始格式:
{
"id": "som-other-id7",
"items": [{"id": "727f9b52-a88b-4ec3-a68c-98d190564497", "count": 2}, {"id": "7dfd30e7-2d4a-4b16-ae3d-20a330d9b438"}],
"menuId": "7715af03-968f-40e5-9eb2-98016f3deeca"
}
我尝试通过以下方式将它添加到数据库中:Order.create(orderJson)
.then((order) =>
orderJson.items.map((item) => order.addItem(item.id, { count: item.count }))
)
但是,计数未填充。我试过了:setItem
而不是 addItem
item.id
传递 {itemId, orderId}
最佳答案
您应该像这样调用 addItem:
order.addItem(item.id, { through: { count: item.count }})
查看 BelongsToMany section 中的示例
关于javascript - Sequelize 添加多对多关系,附加数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62652140/