欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NodeJs操作MongoDB教程之分頁功能以及常見問題

 更新時間:2019年04月09日 10:32:52   作者:jackson影琪  
這篇文章主要給大家介紹了關(guān)于NodeJs操作MongoDB教程之分頁功能以及常見問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用NodeJs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

一,方法介紹

 1,聚合操作之count

count()方法可以查詢統(tǒng)計(jì)符合條件的集合的總數(shù)

1 db.User.count(<query>) // 此方法等價(jià)于 db.User.find(<query>).count()

在分布式集合中,會出現(xiàn)計(jì)算錯誤的情況,這個時候推薦使用aggregate;

 2,find() 方法以非結(jié)構(gòu)化的方式來顯示所有文檔。

1 db.User.find();//相當(dāng)于:select* from User;

3,exec() 方法用于檢索字符串中的正則表達(dá)式的匹配。(javascript方法)

4,sort() 方法對數(shù)據(jù)進(jìn)行排序,sort() 方法可以通過參數(shù)指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而 -1 是用于降序排列。

1 升序:db.User.find().sort({CreateTime: 1});
2 降序:db.User.find().sort({CreateTime: -1});

5,skip()方法來跳過指定數(shù)量的數(shù)據(jù),skip方法同樣接受一個數(shù)字參數(shù)作為跳過的記錄條數(shù)。

1 db.User.find().skip(2)//跳過2條

6,limit()方法接受一個數(shù)字參數(shù),該參數(shù)指定從MongoDB中讀取的記錄條數(shù)。一般與skip連用

1 # limit()中number值為空時代表全部查出
2 db.User.find().limit(2) #讀取的條數(shù)
1 # 常用在分頁方法中
2 # 查詢User集合中,跳過前兩條記錄,每頁一條記錄
3 > db.User.find().skip(2).limit(1)

二,封裝與接口拋出

2.1,分頁查詢

  1,根據(jù)查詢條件獲取總條數(shù),使用count({},callback)方法

/**
 * 根據(jù)條件獲取有多少條數(shù)據(jù) 文檔數(shù)
 * @param table_name 表名
 * @param conditions 查詢條件 {a:1, b:2}
 * @param callback 回調(diào)方法
 */
MongoDbAction.getTotal = function (table_name, conditions, callback) {
 var node_model = this.getConnection(table_name);
 if (!node_model || node_model.message) {
 if (callback) callback(1, node_model)
 } else {
 node_model.find(conditions)
  .count({})
  .exec(function (err, total) {
  if (err) {
   if (callback) callback(err);
  } else {
   if (callback) callback(null, total);
  }
  });
 }
};

2,實(shí)現(xiàn)連寫查詢

 (1)這個可以用來做分頁,表示獲取從第1條(第1條記錄序號為0)記錄開始的10條記錄.類似與Mysql的limit 0, 10,如下:

{

 limit:10,//pageSize
 skip:0//page:skip+1
}

(2)按某個字段升序(1)降序(-1),如下 按照創(chuàng)建時間進(jìn)行降序排列

sort: {CreateTime: -1},

(3)代碼連寫查詢實(shí)現(xiàn):

/**
 * 連寫查詢 查詢多條數(shù)據(jù)
 * @param table_name 表名
 * @param conditions 查詢條件 {a:1, b:2}
 * @param options 選項(xiàng):{fields: "a b c", sort: {time: -1}, limit: 10}
 * @param callback 回調(diào)方法
 */
MongoDbAction.whereCondition = function (table_name, conditions, options, callback) {
 var node_model = this.getConnection(table_name);
 if (!node_model || node_model.message) {
  if (callback) callback(1, node_model)
 } else {
  node_model.find(conditions)
   .select(options.fields || '')
   .sort(options.sort || {})//排序 //按某個字段升序(1)降序(-1)
   .skip(options.skip || 0)//跳過的條數(shù)
   .limit(options.limit || {})//查詢幾條
   .exec(function (err, res) {
    if (err) {
     if (callback) callback(err);
    } else {
     if (callback) callback(null, res);
    }
   });
 }
};

3,根據(jù)所傳的參數(shù)實(shí)現(xiàn)分頁查詢

拋出分頁查詢的接口

//連寫查詢數(shù)據(jù) 包括分頁 獲取總條數(shù)
router.put('/user/getSingleAndManyData', function (req, res) {
 var tableName = req.body.tableName;//'User'
 var IsEnable = req.body.IsEnable;
 var limit = req.body.pageSize;
 var sort = req.body.sort;
 var skip = req.body.page;
 let conditions = {
  IsEnable
 }
 let options = {
  sort: {CreateTime: sort},//排序
  limit,//pageSize
  skip:(limit*(skip-1))//page
 }
 // let options = {
 //  sort: {CreateTime: -1},//按某個字段升序(1)降序(-1)
 //  limit:10,
 //  skip:(limit*(skip-1))//skip=1=> skip:0
 // }
 // 這個可以用來做分頁,表示獲取從第1條(第1條記錄序號為0)記錄開始的10條記錄.類似與Mysql的limit 0, 10
 let data = {
  httpCode: 200,
  message: "查詢成功!",
  status: 1,
  data: null,
  page:skip,
  pageSize:limit
 }
 
 MongoDbAction.getTotal(tableName,conditions, function (err, total) {
  if (err) {
   data.total=0
   data.status = 0
   data.message = "未查詢到數(shù)據(jù)!"
   data.data = null
   res.status(data.httpCode).json(data);
  } else {
   MongoDbAction.whereCondition(tableName,conditions,options, function (err, result) {
    if (!err) {
     data.total=total
     data.data = result
     res.status(data.httpCode).json(data);
    } else {
     data.total=0
     data.status = 0
     data.message = "未查詢到數(shù)據(jù)!"
     data.data = result
     res.status(data.httpCode).json(data);
    }
   });
  }
 });
 
})

4,接口調(diào)用,返回的結(jié)果集如下:


三,常見問題

1,連接警告

警告:(node:204) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.

1 mongoose.connect(dbURL);// 連接數(shù)據(jù)庫 存在警告


解決辦法:連接配置添加: { useNewUrlParser: true }

1 mongoose.connect(dbURL,{useNewUrlParser:true});//連接數(shù)據(jù)庫

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論