わかりました。多くの検索とデバッグを行った結果、2 つのことがわかりました。
1) 私の続編インスタンスは sequelize.sequelize
でした 、 module.exports
による ロダッシュ付き。残念ながら、私はそれを覚えておらず、質問でも言及していませんでした.申し訳ありません。
2) offset
そしてlimit
fetch
を使用してください したがって、SQL 2008 では無効な SQL シンタックスが生成されます。
sequelize.sequelize.query()
を使用して生のクエリを実行する必要がありました (私のインスタンスはsequelize.sequelizeだったので)
高速ルーティングとクエリの醜い形式を含む完全なコードは次のとおりです:
var express = require('express')
var app = express();
app.use('/tableName', function(req, res){
var page = req.params.page || 2;
var rowsPerPage = req.params.perpage || 30;
if(rowsPerPage > 100){
rowsPerPage = 100; //this limits how many per page
}
var theQuery = 'declare @rowsPerPage as bigint; '+
'declare @pageNum as bigint;'+
'set @rowsPerPage='+rowsPerPage+'; '+
'set @pageNum='+page+'; '+
'With SQLPaging As ( '+
'Select Top(@rowsPerPage * @pageNum) ROW_NUMBER() OVER (ORDER BY ID asc) '+
'as resultNum, * '+
'FROM tableName )'+
'select * from SQLPaging with (nolock) where resultNum > ((@pageNum - 1) * @rowsPerPage);';
sequelize.sequelize.query(theQuery)
.spread(function(result) {
res.json({result: result});
});
});
そして、(私がしたように) なぜ sequelize.sequelize
なのか疑問に思っているなら sequelize
だけではなく ?
まあ、これは var sequelize
のためです require()
です 次の module.exports
を含むファイルから :
module.exports = lodash.extend({
sequelize: sequelize, //reffers to new Sequelize(db,user,pass,{});
Sequelize: Sequelize
}, db)
これが sequelize.query()
だけの理由です undefined
が返されました 、および sequelize.sequelize.query()
本当に私の sequelize
ので、正常に動作します variable は sequelize
を持つオブジェクトです プロパティは、実際の続編接続インスタンスです。