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建站解决方案:快速部署与云端平台低成本实践
微信推文制作网站有哪些,怎么做微信推文,急?

