一到多个sequelizejs ORM未能获得结果

时间:2017-10-24 08:28:52

标签: mysql node.js express sequelize.js

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

我希望每个订单都包含该订单的所有orderItem

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

1 个答案:

答案 0 :(得分:0)

hasOne将id放在命运模型上,这意味着您将在Order上生成外键。只需要像hasMany这样使用Order.hasMany(OrderItem, { as: 'orders');Order.findAll({ where:{ artist_id:req.user.id }, include: [{ model: OrderItem, as: 'orders' }] }).then(function(result){ console.log(result); }) 。执行此操作,您将在OrderItem上拥有Order的外键。

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

as

使用{{1}}的评论,如果您在同一型号上有多个参考,这将告诉您关系的续集。