Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Paginasi dengan Sequelize.js di SQL 2008 (yang tidak mendukung FETCH)

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengubah Susunan Level Server dari Menjalankan Instance SQL Server

  2. Cara mengekstrak karakter ke-n tertentu dari string dalam SQL

  3. Pemicu Pembaruan SQL Server, Dapatkan Hanya bidang yang dimodifikasi

  4. ORDER BY ... COLLATE di SQL Server

  5. SQL Server ROWCOUNT_BIG()