Welcome

首页 / 脚本样式 / JavaScript / node.js基于mongodb的搜索分页示例

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;//设置当前页码为1var 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);}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。