Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Странирай със Sequelize.js в SQL 2008 (който не поддържа FETCH)

Добре, след много търсене и отстраняване на грешки намерих 2 неща.

1) Моят екземпляр на sequelize беше sequelize.sequelize , поради module.exports с лодаш. Лошото ми, не го запомних и дори не го споменах във въпроса. Съжалявам за това.

2) offset и limit използвайте fetch и по този начин генерира невалиден SQL синтаксис за SQL 2008.

Трябваше да изпълня необработена заявка, използвайки 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 променливата е обект с sequelize свойството е реалният екземпляр на секвенизирана връзка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли някакъв начин за DISTINCT или групиране по текст (или ntext) в SQL Server 2005?

  2. MSSQL cast( [varcharColumn] to int) в SELECT се изпълнява преди клаузата WHERE да филтрира лоши стойности

  3. Как да заредя изображение от SQL Server в полето за картина?

  4. ListAGG в SQLSERVER

  5. Максимална дължина на текстов тип данни на SQL Server =65 535?