:Sequelize如何设置返回的数据顺序

时间:2012-12-13 16:46:50

标签: node.js syntax-error sequelize.js

我发布了使用limit和offset设置findAll查询的返回数据顺序的问题,我使用文档中的示例代码:order: 'group DESC'但是它会抛出错误说:

Error: SQLITE_ERROR: near "group": syntax error

这是完整的功能。

A_Model.findAll({
     offset:req.query.page * req.query.rows - req.query.rows,
     limit :req.query.rows // TODO: Of course, I put the trailing comma here ;)
     // TODO: order: 'group DESC'
    })
.success(function (docs) {
    response_from_server.records = count;
    response_from_server.page = req.query.page;
    response_from_server.total = Math.ceil(count / req.query.rows);
    response_from_server.rows = [];

    for (item in docs) {
        response_from_server.rows.push({
            id  :docs[item].id,
            cell:[
                docs[item].group,
                docs[item].description,
                docs[item].path,
                docs[item].value
            ]
        });
    }

    // Return the gathered data.
    res.json(response_from_server);
})
.error(function (error) {       
    logger.log('error', error);
});

提前致谢。

1 个答案:

答案 0 :(得分:12)

你给findAll方法的“order”-string没有在Sequelize中解析,只是为了防止SQL注入而被转义。 “group”是 most 某些 SQL方言中的保留关键字,因此查询无法运行。

为了使其工作,只需将“group”列放入`s,就像这样:

A_Model.findAll({
 offset:req.query.page * req.query.rows - req.query.rows,
 limit :req.query.rows,
 order: '`group` DESC'
})