ठीक है, तो बहुत सारी खोज और डिबगिंग के बाद, मुझे 2 चीज़ें मिलीं।
1) मेरी अगली कड़ी का उदाहरण था sequelize.sequelize
, एक module.exports
. के कारण लॉश के साथ। मेरा बुरा, मुझे वह याद नहीं आया, और प्रश्न में इसका उल्लेख भी नहीं किया। मुझे इसके लिए खेद है।
2) offset
और limit
fetch
. का उपयोग करें और इस प्रकार SQL 2008 के लिए अमान्य SQL सिंटैक्स उत्पन्न करता है।
मुझे sequelize.sequelize.query()
का उपयोग करके एक कच्ची क्वेरी करनी थी (चूंकि मेरा उदाहरण सीक्वेलाइज.सेक्वेलाइज था)।
यहां मेरा पूरा कोड है, जिसमें एक्सप्रेस रूटिंग और क्वेरी के लिए बदसूरत प्रारूप शामिल है:
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
वेरिएबल sequelize
. के साथ एक ऑब्जेक्ट है संपत्ति वास्तविक अगली कड़ी कनेक्शन उदाहरण है।