Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Phân trang bằng Sequelize.js tại SQL 2008 (không hỗ trợ FETCH)

Được rồi, vậy là sau rất nhiều lần tìm kiếm và gỡ lỗi, tôi đã tìm thấy 2 thứ.

1) Phiên bản tiếp theo của tôi là sequelize.sequelize , do một module.exports với lodash. Điều tồi tệ của tôi, tôi đã không nhớ điều đó, và thậm chí không đề cập đến nó trong câu hỏi. Tôi xin lỗi về điều này.

2) Phần bù offsetlimit sử dụng fetch và do đó tạo ra sintax SQL không hợp lệ cho SQL 2008.

Tôi phải thực hiện một truy vấn thô, sử dụng sequelize.sequelize.query() (vì phiên bản của tôi là sequize.sequelize).

đây là mã đầy đủ của tôi, bao gồm định tuyến nhanh và định dạng xấu cho truy vấn:

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

Và nếu bạn (như tôi đã làm) thắc mắc tại sao sequelize.sequelize thay vì chỉ sequelize ?

Điều này là do var sequelize là một require() từ một tệp có module.exports sau :

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

Vì vậy, đây là lý do tại sao chỉ sequelize.query() đã được trả lại undefinedsequelize.sequelize.query() hoạt động tốt, vì đúng là sequelize của tôi biến là một Đối tượng có sequelize thuộc tính là phiên bản kết nối tiếp theo thực sự.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt cụm chuyển đổi dự phòng SQL Server -1

  2. SQL Server 2008 Spatial:tìm một điểm trong đa giác

  3. Làm thế nào để so sánh dấu thời gian SQL trong .NET?

  4. Thủ tục hoặc hàm !!! có quá nhiều đối số được chỉ định

  5. Làm cách nào để tạo yêu cầu HTTP từ máy chủ SQL?