如何使用 bookshelf-pagemaker 添加简单的 Where 子句

How to add simple Where-clause with bookshelf-pagemaker

使用 bookshelf-pagemaker NodeJS 模块:

.. 我能够让基本的分页工作,它从 table 中选择所有行。但我没有看到如何向查询添加 WHERE 子句。

QUESTION:

Can someone please share a small example of using bookshelf-pagemaker with search criteria - e.g. SELECT * FROM user WHERE id > 10 ?

var Bookshelf = require('bookshelf').mysqlAuth;
var pagemaker = require('bookshelf-pagemaker')(Bookshelf);

var UserDAO = Bookshelf.Model.extend({
    tableName: 'user'
});

function getRegisteredUsers(pageNum, pageSize, offset, callback) {   

    var args = {
        params: {
            start: offset,
            page: pageNum,
            length: pageSize
        },
        model: UserDAO
    };

    var resultObj = pagemaker.datatables.paginate(args);
    resultObj.then(function (result) {
        console.log('Enter: paginate(args)');
        callback(result);
    });
}

我在新发布的 0.1.3 版本中添加了对此的支持。您现在可以为传递给分页函数的 args 对象提供一个 where 语句。您提供的 sql 语句将被添加到过滤器 sql 中,因此您仍然可以使用搜索功能

您的 args 对象看起来像

    var args = {
        params: {
            start: offset,
            page: pageNum,
            length: pageSize
        },
        model: UserDAO,
        where: '(id > 10 AND id < 100)'
    };

var resultObj = pagemaker.datatables.paginate(args);

resultObj.then(function (result) {
        paginateHandler(result);
    });
}

function paginateHandler (result) 
{
    var numPaginatedRecords = result.recordsFiltered;

    var pagesTotal = Math.ceil(numPaginatedRecords / ITEMS_ON_PAGE);

    res.render('my_paginated_view', {
        data: result.data,
        currentPage: <from URL or default 1>,
        pagesCount: pagesTotal
    });
};