sql >> データベース >  >> RDS >> Sqlserver

SQL 2008 での Sequelize.js によるページネーション (FETCH をサポートしていない)

    わかりました。多くの検索とデバッグを行った結果、2 つのことがわかりました。

    1) 私の続編インスタンスは sequelize.sequelize でした 、 module.exports による ロダッシュ付き。残念ながら、私はそれを覚えておらず、質問でも言及していませんでした.申し訳ありません。

    2) offset そしてlimit fetch を使用してください したがって、SQL 2008 では無効な SQL シンタックスが生成されます。

    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 ので、正常に動作します variable は sequelize を持つオブジェクトです プロパティは、実際の続編接続インスタンスです。




    1. 複数文字の区切り文字で文字列の行を短縮するにはどうすればよいですか?

    2. 列の値に基づいてOracleクエリの結果を展開する方法

    3. mysqlの読み取り専用テーブル

    4. JavaからOracleへの一括挿入