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

发布时间 - 2026-01-10 22:43:58    点击率:

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

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


# nodejs  # mongodb  # 分页  # mongodb搜索分页  # nodeJS与MySQL实现分页数据以及倒序数据  # Vue+Node实现商品列表的分页、排序、筛选  # 添加购物车功能详解  # NodeJs操作MongoDB教程之分页功能以及常见问题  # Node.js中Bootstrap-table的两种分页的实现方法  # nodejs mysql 实现分页的方法  # nodejs个人博客开发第六步 数据分页  # NodeJS和BootStrap分页效果的实现代码  # nodejs分页类代码分享  # node+express实现分页效果  # 每页  # 请输入  # 只需要  # 大家多多  # 再点  # input  # gt  # control  # form  # text  # searchPart  # search  # exports  # module  # div  # lt  # br  # paginObj  # script 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Linux网络带宽限制_tc配置实践解析【教程】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel如何使用Eloquent进行子查询  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  php 三元运算符实例详细介绍  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  郑州企业网站制作公司,郑州招聘网站有哪些?  Android仿QQ列表左滑删除操作  Python正则表达式进阶教程_复杂匹配与分组替换解析  网站制作价目表怎么做,珍爱网婚介费用多少?  QQ浏览器网页版登录入口 个人中心在线进入  浅谈redis在项目中的应用  js代码实现下拉菜单【推荐】  免费网站制作appp,免费制作app哪个平台好?  nginx修改上传文件大小限制的方法  香港服务器租用费用高吗?如何避免常见误区?  jQuery 常见小例汇总  iOS发送验证码倒计时应用  Python文件异常处理策略_健壮性说明【指导】  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何正确选择百度移动适配建站域名?  独立制作一个网站多少钱,建立网站需要花多少钱?  Android中AutoCompleteTextView自动提示  微信小程序 require机制详解及实例代码  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel distinct去重查询_Laravel Eloquent去重方法  如何确保西部建站助手FTP传输的安全性?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  文字头像制作网站推荐软件,醒图能自动配文字吗?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  微信小程序制作网站有哪些,微信小程序需要做网站吗?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何在建站之星绑定自定义域名?  Python函数文档自动校验_规范解析【教程】  在centOS 7安装mysql 5.7的详细教程  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  如何快速打造个性化非模板自助建站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel如何发送系统通知?(Notification渠道示例)  如何利用DOS批处理实现定时关机操作详解  如何快速搭建高效WAP手机网站吸引移动用户?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  微信推文制作网站有哪些,怎么做微信推文,急?