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

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


本文参考链接:https://www.yisu.com/zixun/195217.html
评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Java多线程中Lock锁如何使用