【发布时间】:2018-09-25 23:18:23
【问题描述】:
我正在尝试使用 sequelize 将查询编码到数据库中。这正是我要转录的句子:
SELECT matches.uid_prop, matches.uid_player, matches.porcentaje, users.uid, profile_users.name, profile_users.profile, profile_users.birthday, profile_users.location
FROM (matches JOIN users ON (((matches.uid_prop = users.uid) AND (matches.uid_player = 11)) OR ((matches.uid_player = users.uid) AND (matches.uid_prop = 11)))) JOIN profile_users USING(uid)
WHERE (matches.uid_player = 11) OR (matches.uid_prop = 11);
我不知道是否应该更改关联以便根据需要构建连接条件
Matches.belongsTo(User, {as: 'match_prop', foreignKey: 'uid_prop'});
User.hasMany(Matches, {as: 'user_prop', foreignKey: 'uid_prop'});
Matches.belongsTo(User, {as: 'match_player', foreignKey: 'uid_player'});
User.hasMany(Matches, {as: 'user_player', foreignKey: 'uid_player'});
或添加 where 并指定匹配项和用户之间的包含关系。如果是这种情况,我如何从与用户一起制作的包含中的 where 语句中引用匹配字段,以便我可以比较,例如,User.uid 和 Matches.uid_prop。 我已经尝试过这种表示法,但它不起作用:$Matches.uid_prop$
Matches.findAll({
attributes: ['porcentaje'],
where: {
$or: [
{uid_prop: uid},
{uid_player: uid}
]
},
include: [{
model: User,
attributes: ['uid'],
include: [{
model: Profile_user,
attributes: ['name', 'profile', 'birthday', 'location']
}]
}]
})
【问题讨论】:
标签: node.js postgresql sequelize.js