gpt4 book ai didi

node.js - 如何在 NodeJS 中将 ORDER BY 添加到 sequelize 方法中

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:28 24 4
gpt4 key购买 nike

我有一个使用 Sequelize 访问 MySQL 数据库的 nodeJS 应用。

用户有两个表:useruser_password

如果用户至少更改过一次密码,则 user_password 表中的每个用户都有多个条目。我想通过 findUserWithUsername(username) 验证用户,如下所示:

async findOne(query = {}, include = [] , attributes = ['id', 'username', 'email'] ) {
const user = await db.user.findOne({include: include, where: query, attributes: attributes});
return user;
}

async findUserWithUsername(username) {
const include = [
{
model: db.user_password,
attributes: ['id','algorithm', 'password', 'salt'],
order: 'id desc'
}
];
return await this.findOne({username: username}, include); // need to get last one since there could be multiples
}

这不起作用:order: 'id desc'

基本上,表被连接起来并返回 user_password 中的第一个密码条目,但是 order: id desc 没有做任何事情......我仍然得到第一个(最旧的)条目。这是现在从 findUserWithUsername() 方法运行的查询:

    SELECT `user`.`id`, `user`.`username`, `user`.`email`, 
`user_password`.`id` AS `user_password.id`,
`user_password`.`algorithm` AS `user_password.algorithm`,
`user_password`.`password` AS `user_password.password`,
`user_password`.`salt` AS `user_password.salt`
FROM `user` AS `user`
LEFT OUTER JOIN `user_password` AS `user_password`
ON `user`.`id` = `user_password`.`user_id` WHERE `user`.`username` = 'joe' LIMIT 1

那么....我如何将 ORDER BY id 的 sql 等价物添加到 findUserWithUsername() 方法?

最佳答案

也许你应该倒过来:

userPassword.findAll({
include:[{model:db.user, required: true, where:{ ...add here username... }}],
order: 'id desc'
})

获取包括该用户名在内的所有用户密码

也许你应该检查这个问题seqeuelize issue 3173

关于node.js - 如何在 NodeJS 中将 ORDER BY 添加到 sequelize 方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777656/

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