【问题标题】:One to many sequelizejs ORM failed to get result一对多 sequelizejs ORM 未能得到结果
【发布时间】:2017-10-24 08:28:51
【问题描述】:

我有两个模型,一个是Order,下一个是OrderItem,具有一对多关系,即一个订单有多个可用的订单项目。

我想用该订单的所有 orderItems 获取每个订单

1)Order PK:id

2)OrderItem FK:order_id Refers id in Order

这是我的关系

Order.hasMany(OrderItem, { as: 'orders',targetKey:'order_id' } );
        OrderItem.hasOne(Order,{foreignKey:'id'});
        sequelize.sync();



Order.findAll({where:{artist_id:req.user.id}}).then(function(result){
  console.log(result);
})

result 不包含 orderItems

【问题讨论】:

  • 你应该定义属于关系而不是hasone OrderItem.belongsTo(Order,{foreignKey:'id'});

标签: mysql node.js express sequelize.js


【解决方案1】:

hasOne将 id 放在命运模型上,这意味着您将在 Order 上生成一个外键。只需要像这样使用hasManyOrder.hasMany(OrderItem, { as: 'orders');。这样做你将在 OrderItem 上有一个 Order 的外键。

然后在您的查询中,如果您需要订单和必须使用包含子句的项目:`

Order.findAll({
    where:{
        artist_id:req.user.id
    },
    include: [{
      model: OrderItem,
      as: 'orders'
    }]
}).then(function(result){
  console.log(result);
})

请记住使用as,如果您在同一模型上有多个,这将告诉您所指的续集。

【讨论】:

    猜你喜欢
    • 2020-08-22
    • 2018-05-13
    • 2017-10-03
    • 2015-05-16
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多