提问者:小点点

一对多sequelizejs ORM未能获得结果


我有两个模型,一个是订单,另一个是订单项,具有一对多关系,即一个订单有多个订单项可用。

我想获得每个订单以及该订单的所有orderItems

1) 订单主键:id

2)OrderItem FK:order_id在订单中引用id

这是我的亲戚

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

但是,结果不包含orderItems


共1个答案

匿名用户

hasOne将id放在destiny模型上,这意味着您将根据订单生成一个外键。只需要像这样使用hasManyOrder。hasMany(OrderItem,{as:'orders');。这样做,您将在OrderItem上拥有一个Order外键。

然后在查询时,如果您需要订单和项目,则必须使用include子句:`

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

请记住将用作,这将告诉sequelize with relations your reference,如果您在同一型号上有多个。