sql >> Databasteknik >  >> RDS >> Sqlserver

Sida in med Sequelize.js i SQL 2008 (som inte stöder FETCH)

Okej, så efter mycket sökning och felsökning hittade jag två saker.

1) Min sequelize-instans var sequelize.sequelize , på grund av en module.exports med lodash. My bad, jag kom inte ihåg det och nämnde det inte ens i frågan. Jag är ledsen för detta.

2) offset och limit använd fetch och genererar således ogiltig SQL-sintax för SQL 2008.

Jag var tvungen att utföra en råfråga med sequelize.sequelize.query() (eftersom min instans var sequelize.sequelize).

här är min fullständiga kod, inklusive expressrouting och fult format för frågan:

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});
      });
});

Och om du (som jag gjorde) undrar varför sequelize.sequelize istället för bara sequelize ?

Tja, detta beror på att var sequelize är en require() från en fil med följande module.exports :

 module.exports = lodash.extend({
  sequelize: sequelize, //reffers to new Sequelize(db,user,pass,{});
  Sequelize: Sequelize
 }, db)

Så det är därför bara sequelize.query() returnerades undefined , och sequelize.sequelize.query() fungerar bra, för i sanning min sequelize variabel är ett objekt med sequelize egenskapen är den verkliga sequelize-anslutningsinstansen.




  1. Spring Boot JPA MySQL :Det gick inte att fastställa en lämplig drivrutinsklass

  2. Serverns tidszon offsetvärde

  3. Hur konverterar man rader till kolumner i Oracle?

  4. hur man lägger till en ny kolumn varje gång jag kör ett pythonprogram