gpt4 book ai didi

mysql - 在 Sequelize 中使用关联进行查询

转载 作者:行者123 更新时间:2023-11-29 10:41:14 24 4
gpt4 key购买 nike

我在我的nodejs项目中使用Sequelizer,但我无法从官方文档中弥补任何内容。然而我设法创建表并添加行等。但问题是我需要查询在其关联上具有一些特殊条件的对象。

我有一个用户模型、一个投票模型和一个位置模型。用户可以为某个职位的其他用户投票。这是构成关系的代码:

Position.hasMany(User,{as: 'Candidate'});
Votes.belongsToMany(User,{through: 'UserVote'});
User.belongsToMany(Votes,{through: 'UserVote'});

问题是我没有找到一种方法来查询一个已知用户尚未投票的职位。我该怎么做?

最佳答案

我并不是 100% 知道如何使用关联来做到这一点,但我会尝试向您展示如何使用常规查询来做到这一点。如果语法不完全完美,请原谅,这只是凭内存。假设您提供了一个用户标识符(我将其称为 userId)。

编辑:我还注意到您正在使用 MySQL。这在 Postgres 中有效,但您可能需要调整语法才能使其适合您。我不知道 MySQL 的具体细节,但这应该足够接近,让您能够明白!

Position.findAll({
where: [
`NOT EXISTS(
SELECT 1
FROM "votes"
WHERE "votes"."position_id" = "position"."id" AND
"votes"."user_id" = ${userId}
)`
]
}).then(...);

我自己还没有找到更好的方法来查询存在。对于此类查询,我通常会选择这种模式。我对您的实际数据库模型做了一些假设。

还值得注意的是,这是针对 Sequelize 3.x.x 的,但我认为它应该或多或少适用于 4.x.x。

祝你好运! :)

关于mysql - 在 Sequelize 中使用关联进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45438359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com