如何将种子值传递给 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 正确构建查询供使用。

因此,可以肯定地说,在撰写本文时,目前sequelizemaster分支中不支持默认; @Anatoly 的回答显示了如何通过在您自己的项目中利用 sequelize.fn 来实现这一目标。

如果您希望查询仅在 MySQL 中有效,那么只需使用 sequelize.fn:

users.findAll({
  order: [sequelize.fn('RAND', '192.168.1.1')],
});