如何将种子值传递给 Sequelize 中的随机顺序函数
How to pass a seed value to random order function in Sequelize
在 SQL 方言中,您可以随机排序,并且可以将种子传递给随机函数以获得可重复的随机行顺序。
在 MySQL 你会这样做:
SELECT * FROM `users` ORDER BY RAND("192.168.1.1")
我知道在使用 Sequelize 查询时如何使用 RAND
函数:
users.findAll({
order: [sequelize.random()],
});
我似乎无法弄清楚如何将种子传递给随机函数。
我查看了文档:https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-random
而且 sequelize.random()
函数似乎没有任何参数。
这可能吗?
没有任何官方文档提及该问题,definition of the sequelize.random()
method in sequelize.js
(line 892) 表明它当前不接受任何参数,只是作为一种方法,根据配置的特定 RDBMS 正确构建查询供使用。
因此,可以肯定地说,在撰写本文时,目前在sequelize
的master
分支中不支持默认; @Anatoly 的回答显示了如何通过在您自己的项目中利用 sequelize.fn
来实现这一目标。
如果您希望查询仅在 MySQL 中有效,那么只需使用 sequelize.fn
:
users.findAll({
order: [sequelize.fn('RAND', '192.168.1.1')],
});
在 SQL 方言中,您可以随机排序,并且可以将种子传递给随机函数以获得可重复的随机行顺序。
在 MySQL 你会这样做:
SELECT * FROM `users` ORDER BY RAND("192.168.1.1")
我知道在使用 Sequelize 查询时如何使用 RAND
函数:
users.findAll({
order: [sequelize.random()],
});
我似乎无法弄清楚如何将种子传递给随机函数。
我查看了文档:https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-random
而且 sequelize.random()
函数似乎没有任何参数。
这可能吗?
没有任何官方文档提及该问题,definition of the sequelize.random()
method in sequelize.js
(line 892) 表明它当前不接受任何参数,只是作为一种方法,根据配置的特定 RDBMS 正确构建查询供使用。
因此,可以肯定地说,在撰写本文时,目前在sequelize
的master
分支中不支持默认; @Anatoly 的回答显示了如何通过在您自己的项目中利用 sequelize.fn
来实现这一目标。
如果您希望查询仅在 MySQL 中有效,那么只需使用 sequelize.fn
:
users.findAll({
order: [sequelize.fn('RAND', '192.168.1.1')],
});