Sequelize 创建一个新实例并添加关联
Sequelize Create a new instance and add association
我查看了文档并通读了 sequelize github 存储库中与此相关的一些问题,但到目前为止还没有找到任何解决方案,恕我直言,操作简单。
我有两个模型:用户和卡片。它们与一对一的关系相关联。
Orders.create({
date: req.body.date,
...
card: req.body.card //FK to a card ID
})
req.body.card是卡片的id。当我取回创建的对象时,尽管卡为空。
我也试过先创建订单,然后再添加关联,但也没有成功。我发现了一些关于设置关联的 set
函数的内容,但我只看到了具有 hasMany
关系的示例。
我不想做任何花哨的事情 - 只是想在订单的卡片字段中设置卡片 ID。
您的模型定义存在一些问题:
Orders.hasOne(models.Cards, { foreignKey: 'id', as: 'card', });
- 在你的定义中,外键会放在
cards
table.
- 将
foreignKey
命名为 id
会与模型自己的 id
字段发生冲突。
尝试以下操作:
const Card = sequelize.define('card', {
name: { type: Sequelize.STRING }
});
const Order = sequelize.define('order', {
name: { type: Sequelize.STRING }
});
Order.hasOne(Card, { foreignKey: 'order_id' }); // if foreignKey is not included, will default to orderId
const order = await Order.create({
name: 'first order'
})
const card = await Card.create({
name: 'first card',
order_id: order.id
})
我查看了文档并通读了 sequelize github 存储库中与此相关的一些问题,但到目前为止还没有找到任何解决方案,恕我直言,操作简单。 我有两个模型:用户和卡片。它们与一对一的关系相关联。
Orders.create({
date: req.body.date,
...
card: req.body.card //FK to a card ID
})
req.body.card是卡片的id。当我取回创建的对象时,尽管卡为空。
我也试过先创建订单,然后再添加关联,但也没有成功。我发现了一些关于设置关联的 set
函数的内容,但我只看到了具有 hasMany
关系的示例。
我不想做任何花哨的事情 - 只是想在订单的卡片字段中设置卡片 ID。
您的模型定义存在一些问题:
Orders.hasOne(models.Cards, { foreignKey: 'id', as: 'card', });
- 在你的定义中,外键会放在
cards
table. - 将
foreignKey
命名为id
会与模型自己的id
字段发生冲突。
尝试以下操作:
const Card = sequelize.define('card', {
name: { type: Sequelize.STRING }
});
const Order = sequelize.define('order', {
name: { type: Sequelize.STRING }
});
Order.hasOne(Card, { foreignKey: 'order_id' }); // if foreignKey is not included, will default to orderId
const order = await Order.create({
name: 'first order'
})
const card = await Card.create({
name: 'first card',
order_id: order.id
})