当前位置: 首页 > 后端技术 > Node.js

基于mongodb的搜索分页

时间:2023-04-03 14:22:21 Node.js

mongodb模糊查询及分页1、创建数据库代码如下:varmongoose=require('mongoose');varshortid=require('shortid');varSchema=mongoose.Schema;varIndexDataSchema=newSchema({_id:{type:String,unique:true,'default':shortid.generate},type:String,city:String,name:string,value:[{name:String,value:String}],创建:{type:Date,默认:Date.now},展开:String});IndexDataSchema.statics={defaultSort:{'create':1},defaultOptions:{'pageSize':0}};varIndexData=mongoose.model('IndexData',IndexDataSchema);module.exports=IndexData;这里的页面布局只需要搜索框和搜索按钮,点击按钮时会执行search()方法,发送请求代码如下:搜索

<脚本>varpaginObj;//设置每页显示的页码varpageSize=20;//设置当前页码为1varcurrentPage=1;varcondition={'city':currentCityId,'name':''}jQuery(document).ready(function(){refresh();});//获取搜索条件functiongetCondition(){varname=$('#txtSearch').val();if(name&&name.trim()){//{'$regex':name,'$options':'i'}}是模糊查询的固定语法,name是一个参数condition={'city':currentCityId,'name':{'$regex':name,'$options':'i'}};}else{condition={'city':currentCityId}}返回条件;}//刷新页面functionrefresh(){//查找内容$.get('/Manage/list/projects',{'pageSize':pageSize,'currentPage':currentPage,'condition':getCondition()},function(result){appendData(result.data);})//求个数$.get('/Manage/listCount/projects',{'condition':condition},function(result){paginObj=newDataPagin(document.querySelector('.projects-list'),result.count,{'pageSize':pageSize,'changePageFun':rquestPageData});})}//重新分页functionrquestPageData(currentPage,callback){$.get('/Manage/list/projects',{'pageSize':pageSize,'currentPage':currentPage,'condition':getCondition()},function(result){appendData(result.data);})if(callback){回调();}}//改变页码并显示相应的内容functionchangePage(paginObj,index){paginObj.setPageNumber(index);}functionappendData(data){//调试器;varlist=$('.projects-list').children('tbody');list.html('');//页面显示模板for(vari=0;i搜索数据库,返回对应内容varformidable=require("formidable");varcommon=require('./common');varpath=require("路径");varfs=require('fs');varpath=require('路径');varguid=require('guid');varshortid=require('shortid');varAuctionHouse=require('./db/IndexData');varfuns={getList:function(collectionName,req,res,next){varmainObj=transformCollctionName(collectionName);如果(!mainObj){下一个();}varoptions=req.query;varsort=options.sort||mainObj.defaultSort;varpageSize=options.pageSize||mainObj.defaultOptions.pageSize;varcurrentPage=选项.currentPage||1;var条件=选项。条件||{}//这部分是搜索条件mainObj.find(condition).sort(sort).skip((currentPage-1)*pageSize).limit(pageSize).exec(function(err,docs){如果(错误){下一个(错误);}returnres.json(common.returnData(true,docs));})},countList:function(collectionName,req,res,next){varmainObj=transformCollctionName(collectionName);如果(!mainObj){下一个();}var条件=req.query.condition||{}mainObj.find(condition).count().exec(function(err,docs){if(err){next(err);}returnres.json({'count':docs});})},HandleEvent:function(collectionName,actionsName,req,res,next){varmainFuns=getCollctionFuns(collectionName)if(!mainFuns){next();}varfun=mainFuns[actionsName];如果(!乐趣){下一个();}乐趣(要求,资源,下一个);}