最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js基于mongodb的搜索分頁示例

 更新時間:2017年01月22日 15:02:30   作者:luckyGDD  
本篇文章主要介紹了node.js基于mongodb的搜索分頁示例,mongodb分頁很簡單,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。

mongodb模糊查詢并分頁

1.建立數(shù)據(jù)庫

代碼如下:

var mongoose = require('mongoose');
var shortid = require('shortid');
var Schema = mongoose.Schema;

var IndexDataSchema = new Schema({
  _id: {
    type: String,
    unique: true,
    'default': shortid.generate
  },
  type: String,
  city: String,
  name:string,
  value: [{name: String, value: String}],
  create: {type: Date, default: Date.now},
  expand: String
});

IndexDataSchema.statics = {
  defaultSort: {'create': 1},
  defaultOptions: {'pageSize': 0}

};


var IndexData = mongoose.model('IndexData', IndexDataSchema);

module.exports = IndexData;

頁面布局 這里只需要搜索框和搜索按鈕,再點(diǎn)擊按鈕時,執(zhí)行search()方法并發(fā)送請求

代碼如下:

 <div class="searchPart">
          <input type="text" class="form-control" id="txtSearch" placeholder="請輸入項目名稱">
          <button class="btn btn-success search_btn" onclick="search()">搜索</button>
        </div>
        <script>
  var paginObj;
  
  //設(shè)置每頁顯示頁碼
  var pageSize = 20; 
   
  //設(shè)置當(dāng)前頁碼為1
  var currentPage = 1;
  
  var condition = {'city': currentCityId, 'name': ''}
  jQuery(document).ready(function () {
    refresh();
  });
  
 //獲取查找條件
  function getCondition() {
    var name = $('#txtSearch').val();
    if (name && name.trim()) {
    // {'$regex': name, '$options': 'i'}}為模糊查詢固定語法,name為參數(shù)
      condition = {'city': currentCityId, 'name': {'$regex': name, '$options': 'i'}};
    }
    else {
      condition = {'city': currentCityId}
    }
    return condition;
  }
  
   //刷新頁面
  function refresh() {
  
  //查找內(nèi)容
    $.get('/Manage/list/projects', {
      'pageSize': pageSize,
      'currentPage': currentPage,
      'condition': getCondition()
    }, function (result) {
      appendData(result.data);
    })

//查找個數(shù)
    $.get('/Manage/listCount/projects', {'condition': condition}, function (result) {
      paginObj = new DataPagin(document.querySelector('.projects-list'), result.count, {
        'pageSize': pageSize,
        'changePageFun': rquestPageData
      });
    })
  }

//重新分頁
  function rquestPageData(currentPage, callback) {
    $.get('/Manage/list/projects', {
      'pageSize': pageSize,
      'currentPage': currentPage,
      'condition': getCondition()
    }, function (result) {
      appendData(result.data);
    })
    if (callback) {
      callback();
    }
  }

//改變頁碼,顯示相應(yīng)的內(nèi)容
  function changePage(paginObj, index) {
    paginObj.setPageNumber(index);
  }

  function appendData(data) {
    //debugger;
    var list = $('.projects-list').children('tbody');
    list.html('');
    // 頁面顯示模板
    for (var i = 0; i < data.length; i++) {
    
      .........
      //此部分自己定義
      
   
    })
  }

 
   //點(diǎn)擊搜索按鈕執(zhí)行該方法
  function search() {
    currentPage = 1;
    refresh();
  }


</script>

到數(shù)據(jù)庫查找并返回相應(yīng)內(nèi)容

 var formidable = require("formidable");
  var common = require('./common');
  var path = require("path");
  var fs = require('fs');
  var path = require('path');
  var guid = require('guid');
  var shortid = require('shortid');
  
  var AuctionHouse = require('./db/IndexData');


 var funs = {
  getList: function (collectionName, req, res, next) {
    var mainObj = transformCollctionName(collectionName);
    if (!mainObj) {
      next();
    }
    var options = req.query;
    var sort = options.sort || mainObj.defaultSort;
    var pageSize = options.pageSize || mainObj.defaultOptions.pageSize;
    var currentPage = options.currentPage || 1;
    var condition = options.condition || {}
    
    //此部分為查找條件
    mainObj.find(condition).sort(sort).skip((currentPage - 1) * pageSize).limit(pageSize).exec(function (err, docs) {
      if (err) {
        next(err);
      }
      return res.json(common.returnData(true, docs));
    })
  },
  countList: function (collectionName, req, res, next) {
    var mainObj = transformCollctionName(collectionName);
    if (!mainObj) {
      next();
    }
    var condition = req.query.condition || {}
    mainObj.find(condition).count().exec(function (err, docs) {
      if (err) {
        next(err);
      }
      return res.json({'count': docs});
    })
  },
  HandleEvent: function (collectionName, actionsName, req, res, next) {
    var mainFuns = getCollctionFuns(collectionName)
    if (!mainFuns) {
      next();
    }
    var fun = mainFuns[actionsName];
    if (!fun) {
      next();
    }
    fun(req, res, next);
  }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • node 安裝 windows-build-tools全過程

    node 安裝 windows-build-tools全過程

    這篇文章主要介紹了node 安裝 windows-build-tools全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • node.js中的fs.fstatSync方法使用說明

    node.js中的fs.fstatSync方法使用說明

    這篇文章主要介紹了node.js中的fs.fstatSync方法使用說明,本文介紹了fs.fstatSync的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 詳解nodejs 配置文件處理方案

    詳解nodejs 配置文件處理方案

    這篇文章主要介紹了詳解nodejs 配置文件處理方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • nodeJS進(jìn)程管理器pm2的使用

    nodeJS進(jìn)程管理器pm2的使用

    這篇文章主要介紹了nodeJS進(jìn)程管理器pm2的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • node.js 發(fā)布訂閱模式的實例

    node.js 發(fā)布訂閱模式的實例

    下面小編就為大家?guī)硪黄猲ode.js 發(fā)布訂閱模式的實例。小編覺得挺不錯的,現(xiàn)在就想給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • nodejs構(gòu)建本地web測試服務(wù)器 如何解決訪問靜態(tài)資源問題

    nodejs構(gòu)建本地web測試服務(wù)器 如何解決訪問靜態(tài)資源問題

    這篇文章主要為大家詳細(xì)介紹了nodejs構(gòu)建本地web測試服務(wù)器,教大家如何解決訪問靜態(tài)資源問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • NodeJS實現(xiàn)圖片文本分割

    NodeJS實現(xiàn)圖片文本分割

    這篇文章主要為大家詳細(xì)介紹了NodeJS實現(xiàn)圖片文本分割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 利用n工具輕松管理Node.js的版本

    利用n工具輕松管理Node.js的版本

    我們在測試寫的Nodejs的程序在不同Nodejs版本下是否能正常運(yùn)行,或是我們想要嘗試下最新版 Nodejs 的新特性,但常用的代碼需要舊版本的 Nodejs的時候就需要用 Node 版本管理工具,本文介紹的是利用n工具如何輕松管理Node.js的版本,需要的朋友可以參考下。
    2017-04-04
  • Grunt針對靜態(tài)文件的壓縮,版本控制打包的實例講解

    Grunt針對靜態(tài)文件的壓縮,版本控制打包的實例講解

    下面小編就為大家?guī)硪黄狦runt針對靜態(tài)文件的壓縮,版本控制打包的實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Node.js事件驅(qū)動

    Node.js事件驅(qū)動

    Node.Js是基于javascript語言,建構(gòu)在google V8 engine以及Linux上的一個非阻塞事件驅(qū)動IO框架。這里主要不是介紹nodejs具體應(yīng)用代碼,而是想介紹一下事件驅(qū)動編程。
    2015-06-06

最新評論

博白县| 绵阳市| 平罗县| 福海县| 香河县| 古田县| 许昌县| 宝清县| 鄂州市| 石景山区| 宁河县| 东明县| 上杭县| 靖江市| 阿拉善盟| 洪江市| 赤城县| 伊吾县| 金门县| 华安县| 乡宁县| 喀喇| 东丰县| 乐清市| 叶城县| 苍溪县| 井陉县| 梧州市| 宁波市| 永德县| 阜南县| 永善县| 大名县| 宁陕县| 新沂市| 顺义区| 密山市| 收藏| 治县。| 登封市| 焦作市|