首页 > 编程 > JavaScript > 正文

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

2019-11-19 17:48:47
字体:
来源:转载
供稿:网友

mongodb模糊查询并分页

1.建立数据库

代码如下:

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;

页面布局 这里只需要搜索框和搜索按钮,再点击按钮时,执行search()方法并发送请求

代码如下:

 <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;    //设置每页显示页码  var pageSize = 20;      //设置当前页码为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为参数      condition = {'city': currentCityId, 'name': {'$regex': name, '$options': 'i'}};    }    else {      condition = {'city': currentCityId}    }    return condition;  }     //刷新页面  function refresh() {    //查找内容    $.get('/Manage/list/projects', {      'pageSize': pageSize,      'currentPage': currentPage,      'condition': getCondition()    }, function (result) {      appendData(result.data);    })//查找个数    $.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();    }  }//改变页码,显示相应的内容  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++) {          .........      //此部分自己定义             })  }    //点击搜索按钮执行该方法  function search() {    currentPage = 1;    refresh();  }</script>

到数据库查找并返回相应内容

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表