从 Strapi v4 实体服务获取随机记录

der*_*red 5 node.js strapi

在 Strapi v3 中,以下代码将返回随机记录:

strapi.query(table).model.query(qb => {
  qb.limit(count); //with limit
  qb.orderByRaw("RAND()") //with rand
}).fetchAll()
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 v4 中达到同样的效果?

der*_*red 0

我是如何解决这个问题的,仅供参考:

const qb = strapi.db.entityManager
  .createQueryBuilder("table")
  .init({ select: ["id"] })
  .getKnexQuery()
  .orderByRaw(randomSort())

const ids = (await qb).map(r => r.id)
const filters = { id: { $in: ids } }
return await strapi.entityService.findMany(table, { filters })
Run Code Online (Sandbox Code Playgroud)