6

制限とオフセットを使用して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);
});

前もって感謝します。

4

1 に答える 1

12

findAllメソッドに指定する「order」文字列はSequelizeで解析されず、SQLインジェクションを防ぐためにエスケープされるだけです。「グループ」はで予約されたキーワードです多くの 一部のSQL方言であるため、クエリの実行に失敗します。

これを機能させるには、次のように「グループ」列を「」に入れるだけです。

A_Model.findAll({
 offset:req.query.page * req.query.rows - req.query.rows,
 limit :req.query.rows,
 order: '`group` DESC'
})
于 2012-12-13T19:47:27.747 に答える