Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql . के साथ नोडज में पेजिनेशन

आप ऐसा कुछ करने की कोशिश कर सकते हैं (यह मानते हुए कि आप Express का उपयोग करते हैं 4.x)।

GET मापदंडों का उपयोग करें (यहाँ पृष्ठ आपके इच्छित पृष्ठ परिणामों की संख्या है, और npp प्रति पृष्ठ परिणामों की संख्या है)।

इस उदाहरण में, क्वेरी परिणाम results . में सेट किए गए हैं प्रतिक्रिया पेलोड का क्षेत्र, जबकि पेजिनेशन मेटाडेटा pagination . में सेट है फ़ील्ड.

जहां तक ​​मौजूदा खोज परिणाम के आधार पर पूछताछ की संभावना का सवाल है, तो आपको थोड़ा विस्तार करना होगा, क्योंकि आपका प्रश्न थोड़ा अस्पष्ट है।

var express = require('express');
var mysql   = require('mysql');
var Promise = require('bluebird');
var bodyParser = require('body-parser');
var app = express();

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'myuser',
  password : 'mypassword',
  database : 'wordpress_test'
});
var queryAsync = Promise.promisify(connection.query.bind(connection));
connection.connect();

// do something when app is closing
// see http://stackoverflow.com/questions/14031763/doing-a-cleanup-action-just-before-node-js-exits
process.stdin.resume()
process.on('exit', exitHandler.bind(null, { shutdownDb: true } ));

app.use(bodyParser.urlencoded({ extended: true }));

app.get('/', function (req, res) {
  var numRows;
  var queryPagination;
  var numPerPage = parseInt(req.query.npp, 10) || 1;
  var page = parseInt(req.query.page, 10) || 0;
  var numPages;
  var skip = page * numPerPage;
  // Here we compute the LIMIT parameter for MySQL query
  var limit = skip + ',' + numPerPage;
  queryAsync('SELECT count(*) as numRows FROM wp_posts')
  .then(function(results) {
    numRows = results[0].numRows;
    numPages = Math.ceil(numRows / numPerPage);
    console.log('number of pages:', numPages);
  })
  .then(() => queryAsync('SELECT * FROM wp_posts ORDER BY ID DESC LIMIT ' + limit))
  .then(function(results) {
    var responsePayload = {
      results: results
    };
    if (page < numPages) {
      responsePayload.pagination = {
        current: page,
        perPage: numPerPage,
        previous: page > 0 ? page - 1 : undefined,
        next: page < numPages - 1 ? page + 1 : undefined
      }
    }
    else responsePayload.pagination = {
      err: 'queried page ' + page + ' is >= to maximum page number ' + numPages
    }
    res.json(responsePayload);
  })
  .catch(function(err) {
    console.error(err);
    res.json({ err: err });
  });
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

function exitHandler(options, err) {
  if (options.shutdownDb) {
    console.log('shutdown mysql connection');
    connection.end();
  }
  if (err) console.log(err.stack);
  if (options.exit) process.exit();
}

यह रहा package.json इस उदाहरण के लिए फ़ाइल:

{
  "name": "stackoverflow-pagination",
  "dependencies": {
    "bluebird": "^3.3.3",
    "body-parser": "^1.15.0",
    "express": "^4.13.4",
    "mysql": "^2.10.2"
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेबियन 10 पर नवीनतम MySQL 8 कैसे स्थापित करें

  2. क्या मैं gcloud sql कमांड का उपयोग करके अपने Google क्लाउड Sql उदाहरण पर एक sql फ़ाइल चला सकता हूँ?

  3. स्थानीय नेटवर्क पर MySQL डेटाबेस से कनेक्ट करें

  4. Percona XtraDB क्लस्टर के लिए ProxySQL के साथ लोड संतुलन

  5. शो टेबल से डेटा चुनें MySQL क्वेरी