Bookshelf.js 使用 rand() 随机排序项目

Bookshelf.js orderby items randomly using rand()

我正在使用 bookshelf.js 开发一个使用 mariaDB 的项目。我想随机订购 post 件商品。我发现此解决方案适用于 knex.js

knex('posts').select('id', 'text')
            .orderByRaw('RAND()')
            .limit(100)

但我想对 Bookshelf 做同样的事情。

根据 bookshelf.js 文档,model.query() returns 您可以应用 knex 解决方案的底层 knex 查询生成器。

Post.query(function (qb) {
            qb.select('id',  'text');
            qb.orderByRaw('RAND()')
            qb.limit(2);
        }).fetchAll()

也许这个答案对某人有帮助:

//with where 
    let val = await Question.where({'test_id': id}).query(function (qb) {
                qb.limit(1);//with limit
                qb.orderByRaw('RAND()')//with rand
            }).fetchAll({
                withRelated: ['answers', 'comments'], require: true
            });