我有两个模型,一个是订单
,另一个是订单项
,具有一对多关系,即一个订单有多个订单项可用。
我想获得每个订单以及该订单的所有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
hasOne
将id放在destiny模型上,这意味着您将根据订单生成一个外键。只需要像这样使用hasMany
:Order。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,如果您在同一型号上有多个。