javascript - Sequelize 添加多对多关系,附加数据不起作用

标签 javascript node.js sequelize.js

我定义了以下模型:

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/

    相关文章:

    javascript - JavaScript 中的 Var 声明

    javascript - 在 Javascript 中检查新访客

    javascript - 通过 document.X 访问 DOM 元素

    node.js - NodeJS 将 Int16Array 二进制缓冲区转换为 Google Speech API 的 LINEAR16 编码原始流

    node.js -/bin/sh : sequelize: not found when I try to run express. js 应用程序与 docker-compose

    mysql - Feathers sequelize 按关联列查找

    sequelize.js - 查询和子查询中的序列化顺序

    javascript - JS回调(向D3传递数据)

    node.js - 如何使用多个嵌套的私有(private) Node 模块?

    javascript - 按日期升序排序 sequelize 查询的问题