首页 文章

Sequelize创建新实例并添加关联

提问于
浏览
0

我已经查看了文档,并在sequelize github repo上阅读了与此相关的一些问题,但到目前为止还没有找到任何解决方案,恕我直言,简单的操作 . 我有两个模型:用户和卡 . 它们与一对一的关系相关联 .

Orders.create({
  date: req.body.date,
  ...
  card: req.body.card //FK to a card ID
})

req.body.card是卡的ID . 当我获取创建的对象时,卡片为空 .

我也尝试先创建订单,然后添加一个关联,但也没有任何运气 . 我找到了一些关于 set 函数的东西,它会设置关联,但我只看到了 hasMany 关系的例子 .

我不是想做任何花哨的事情 - 只想在订单上的卡片字段中设置卡片ID .

1 回答

  • 0

    您的模型定义存在一些问题:

    Orders.hasOne(models.Cards, { foreignKey: 'id', as: 'card', });
    
    • 在您的定义中,外键将放在 cards 表中 .

    • 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
    })
    

相关问题