假设我有一个用户表,我想用“where:{id:[3,1,2]}”过滤其中的一些用户,我希望结果与我刚才设置的id顺序相同,这意味着第一个返回id为3的用户,然后是id为1的用户,最后一个返回id为2的用户。
await db.Users.findAll({ where:{id:[3,1,2]},});
await db.Users.findAll({
where:{id:[3,1,2]},
});
字符串
mnemlml81#
当使用具有特定ID的where条件时,要在Sequelize中实现所需的顺序,可以将order选项沿着。我觉得应该可以
// Your list of user IDs *****const userIds = [3, 1, 2];// Query to fetch users with specified IDs in the given order *****const users = await User.findAll({ where: { id: { [Op.in]: userIds, }, }, order: [ Sequelize.literal(`FIELD(id, ${userIds.join(',')})`), ],});
// Your list of user IDs *****
const userIds = [3, 1, 2];
// Query to fetch users with specified IDs in the given order *****
const users = await User.findAll({
where: {
id: {
[Op.in]: userIds,
},
order: [
Sequelize.literal(`FIELD(id, ${userIds.join(',')})`),
],
字符串在上面的例子中:
1条答案
按热度按时间mnemlml81#
当使用具有特定ID的where条件时,要在Sequelize中实现所需的顺序,可以将order选项沿着。
我觉得应该可以
字符串
在上面的例子中:
注:使用Sequelize.literal会使查询容易受到SQL注入的攻击,如果输入没有经过清理的话。请确保在查询中使用userIds数组之前对其进行清理,以防止潜在的安全问题。