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;
  1. 页面布局
    这里只需要搜索框和搜索按钮,再点击按钮时,执行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>
  1. 到数据库查找并返回相应内容

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

基于mongodb的搜索分页的更多相关文章

  1. #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

    郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...

  2. 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类)

    近期工作中有使用到 MongoDb作为日志持久化对象,需要实现对MongoDb的增.删.改.查,但由于MongoDb的版本比较新,是2.4以上版本的,网上已有的一些MongoDb Helper类都是基 ...

  3. 基于MongoDB.Driver的扩展

    由于MongoDB.Driver中的Find方法也支持表达式写法,结合[通用查询设计思想]这篇文章中的查询思想,个人基于MongoDB扩展了一些常用的方法. 首先我们从常用的查询开始,由于MongoD ...

  4. SAP UI 搜索分页技术

    搜索分页技术往往和另一个术语Lazy Loading(懒加载)联系起来.今天由Jerry首先介绍S/4HANA,CRM Fiori和S4CRM应用里的UI搜索分页的实现原理.后半部分由SAP成都研究院 ...

  5. 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式

    适用于app.config与web.config的ConfigUtil读写工具类   之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...

  6. 基于 Python 的自定义分页组件

    基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...

  7. 基于vue2.0的分页组件开发

    今天安排的任务是写基于vue2.0的分页组件,好吧,我一开始是觉得超级简单的,但是越写越写不出来,写的最后乱七八糟的都不知道下句该写什么了,所以重新捋了思路,小结一下- 首先写组件需要考虑: 要从父组 ...

  8. php搜索分页

    最近做搜索分页的时候,发现第一页显示正常,点击到下一页的时候,显示结果变成了搜索全部内容. 仔细查看代码,发现当第一次输入关键词,提交到查询控制器的时候,表单提交的关键字不为空,可是点击到下一页的时候 ...

  9. Yii 框架ajax搜索分页

    要想实现ajax搜索分页 其实很简单 第一步:在 Yii 框架自带的搜索和分页正常运行的情况下,在视图层

随机推荐

  1. 根据文件url,下载文件到本地

    /// <summary> /// 根据文件url,下载文件到本地 /// </summary> /// <param name="fileUrl"& ...

  2. Python+requests接口自动化完整项目框架整理笔记

    前言 通过学习"上海悠悠"博客,自己手动敲了一遍整体的自动化项目搭建,编写用例,打印log日志,生成测试报告,将报告发送至邮箱整体流程跑了一遍,勉强跑通了 一,项目结构 --cas ...

  3. linux中mariadb用navicat远程连接

    在Linux中创建数据库并且远程图形化工具连接 安装数据库 [root@node1 ~]# yum install mariadb-server -y #这里我使用的mariadb 其他数据库也可以 ...

  4. props配置

    配置项props 功能:让组件接收外部传过来的数据[相当于微信转账:有一个转账人转钱给接收者,接收者需要确认接收] (1)传递数据: <Demo name="xxx"> ...

  5. 软件工程homework-001

          一. 回顾你过去将近3年的学习经历 1.当初你报考的时候,是真正喜欢计算机这个专业吗? 答:不喜欢,高中时候就已经对计算机比较抵触了,家里小时候比较富裕,九几年就在日本买了第一批家用台式机 ...

  6. LOTO新型号支持串口蓝牙示波器

    LOTO串口/蓝牙示波器面世 LOTO一直专注在虚拟示波器领域,以USB虚拟示波器为基础,扩展了很多功能模块,可以把Windows示波器,信号源,逻辑分析仪,频谱分析,数据记录,安卓手机平板支持,隔离 ...

  7. SQL注入及防止SQL注入

    •SQL注入 SQL注入是通过操作输入来修改事先定义好的SQL语句,对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据,以达到执行代码对 ...

  8. Linux下编译安装配置MariaDB数据库

    说明:操作系统:CentOS 6.6  64位MariaDB版本:mariadb-5.5.33aMariaDB数据库存放目录:/data/mysql准备:一.配置防火墙,开启3306端口vi /etc ...

  9. ansible 二主机和组

    主机清单的管理 Ansible安装好之后的主机清单配置文件有如下两种: 1.yum安装,配置文件默认路径为: /etc/ansible/hosts 2.源码包安装,主机清单配置文件路径需要从软件包里面 ...

  10. K8S原来如此简单(八)ServiceAccount+RBAC

    ServiceAccount ServiceAccount是给运行在Pod的程序使用的身份认证,Pod容器的进程需要访问API Server时用的就是ServiceAccount账户. Service ...