sql >> Databáze >  >> RDS >> Sqlserver

Stránkování pomocí Sequelize.js v SQL 2008 (které nepodporuje FETCH)

Ok, takže po spoustě hledání a ladění jsem našel 2 věci.

1) Moje instance sequelize byla sequelize.sequelize , kvůli module.exports s lodashem. Můj špatný, to jsem si nepamatoval a ani jsem to v otázce nezmínil. Omlouvám se za to.

2) offset a limit použijte fetch a tím generuje neplatnou sintaxi SQL pro SQL 2008.

Musel jsem provést nezpracovaný dotaz pomocí sequelize.sequelize.query() (protože moje instance byla sequelize.sequelize).

zde je můj úplný kód, včetně expresního směrování a ošklivého formátu pro dotaz:

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

A pokud se (stejně jako já) divíte, proč sequelize.sequelize namísto pouhého sequelize ?

Je to proto, že var sequelize je require() ze souboru s následujícím module.exports :

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

Takže to je důvod, proč stačí sequelize.query() byl vrácen undefined a sequelize.sequelize.query() funguje dobře, protože ve skutečnosti můj sequelize proměnná je objekt s sequelize vlastnost je skutečnou instancí připojení sequelize.




  1. Časový sloupec SQL se neřadí vzestupně

  2. Je rezervační systém vhodný pro Amazon DynamoDB / NoSQL?

  3. Jak smažu jeden ze dvou duplicitních řádků dat v Postgresu?

  4. mysql dotaz pro výběr všeho kromě