yas*_*kor 5 mysql node.js sequelize.js
我从用户表中制作了两个外键。
db.Subscription.belongsTo(db.User, {foreignKey: 'creatorId'});
db.Subscription.belongsTo(db.User, {foreignKey: 'subscriberId'});
Run Code Online (Sandbox Code Playgroud)
在搜索查询期间,我得到的subscriberId列包含而不是creatorId
Subscription.findAll({
where: {
subscriberId: req.decoded._id
},
include: [
{
model: User,
foreignKey: 'creatorId',
attributes: ['name', 'role', 'uid', 'imageUrl']
}
]
})
Run Code Online (Sandbox Code Playgroud)
有人可以找出我在这里做错了什么。
Dyl*_*den 17
尝试为关联设置一个名称,以便 Sequelize 更好地了解要包含哪个关联。你可以做这样的事情来设置关联的名称......
db.Subscription.belongsTo(db.User, {
as: 'creator',
foreignKey: 'creatorId'
});
db.Subscription.belongsTo(db.User, {
as: 'subscriber',
foreignKey: 'subscriberId'
});
Run Code Online (Sandbox Code Playgroud)
然后您可以在查询中使用这些名称来获取特定关联,因此...
Subscription.findAll({
include: {
model: User,
as: 'creator',
attributes: ['name', 'role', 'uid', 'imageUrl']
},
where: {
subscriberId: req.decoded._identer
}
});
Run Code Online (Sandbox Code Playgroud)
当您多次关联同一个表时,设置名称有助于 ORM 确定要加载的关联。对于记录,对于返回的所有记录,您可以通过访问.creator实例上的来访问该关联。
祝你好运!:)
| 归档时间: |
|
| 查看次数: |
8685 次 |
| 最近记录: |