Oke, jadi setelah banyak mencari dan men-debug, saya menemukan 2 hal.
1) Contoh sekuel saya adalah sequelize.sequelize
, karena module.exports
dengan lodas. Saya buruk, saya tidak ingat itu, dan bahkan tidak menyebutkannya dalam pertanyaan. Saya minta maaf tentang ini.
2) offset
dan limit
gunakan fetch
dan dengan demikian menghasilkan sintaks SQL yang tidak valid untuk SQL 2008.
Saya harus melakukan kueri mentah, menggunakan sequelize.sequelize.query()
(karena instance saya adalah sequelize.sequelize).
inilah kode lengkap saya, termasuk perutean cepat dan format buruk untuk kueri:
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});
});
});
Dan jika Anda (seperti saya) bertanya-tanya mengapa sequelize.sequelize
alih-alih hanya sequelize
?
Nah, ini karena var sequelize
adalah require()
dari file dengan module.exports
berikut ini :
module.exports = lodash.extend({
sequelize: sequelize, //reffers to new Sequelize(db,user,pass,{});
Sequelize: Sequelize
}, db)
Jadi inilah mengapa sequelize.query()
dikembalikan undefined
, dan sequelize.sequelize.query()
berfungsi dengan baik, karena sebenarnya sequelize
saya variabel adalah Obyek dengan sequelize
properti menjadi contoh koneksi sekuel nyata.