资讯专栏INFORMATION COLUMN

基于mongodb的搜索分页

YPHP / 3216人阅读

摘要:模糊查询并分页建立数据库代码如下页面布局这里只需要搜索框和搜索按钮,再点击按钮时,执行方法并发送请求代码如下请输入项目名称搜索设置每页显示页码设置当前页码为获取查找条件为模糊查询固定语法,为参数刷新页面查找内容查找个数重新分页改变页码

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()方法并发送请求

代码如下:

  

到数据库查找并返回相应内容

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91654.html

相关文章

  • 基于mongodb搜索分页

    摘要:模糊查询并分页建立数据库代码如下页面布局这里只需要搜索框和搜索按钮,再点击按钮时,执行方法并发送请求代码如下请输入项目名称搜索设置每页显示页码设置当前页码为获取查找条件为模糊查询固定语法,为参数刷新页面查找内容查找个数重新分页改变页码 mongodb模糊查询并分页 1.建立数据库 代码如下: var mongoose = require(mongoose); var shortid =...

    flyer_dev 评论0 收藏0
  • 用vue搭建个人博客介绍----mapblog小站

    摘要:后端主要使用的框架,数据库采用。后台管理登录采用与后端进行登陆状态的确认。本文首发于小站,这是一个积累和分享知识的个人博客 这篇文章搁置了很长时间,最终决定还是把它写出来,给刚开始学习vue并且想用vue写个人博客的同学一个参考。因为当初我也是参考了其他人分享的知识,从一个vue小白变成了一个入门级选手,并最终完成了这个个人博客的搭建工作,代码已托管在Github-justJokee。...

    Ashin 评论0 收藏0
  • 电商参考架构第一部分:搭建一个灵活、可搜索、响应快速产品目录系统

    摘要:因为他们可能会有许多顾客对相同的商品目录进行多次请求。然而,对于我们的参考架构,我们想完全在中实现一个多方面搜索。 本文源地址:http://www.mongoing.com/blog/retail-reference-architecture-part-1 如今,产品目录数据管理对零售商而言是一个非常复杂的问题。经过多年对多个庞大、由供应商提供的系统的依赖之后,零售商目前正在重新考...

    VincentFF 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<