zoukankan      html  css  js  c++  java
  • 基于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;
    
    
    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);
        }
    
  • 相关阅读:
    redis liunx安装
    db2实现每条数据累加
    js实现目录链接,内容跟着目录滚动显示
    Anaconda3安装过程中遇到“Anaconda3-5.1.0-Linux-x86_64.sh:行350: bunzip2: 未找到命令 tar: 它似乎不像是一个 tar 归档文件 tar: 由于前次错误,将以上次的错误状态退出”
    java axis2生成wsdl
    java axis2解析xml(wsdl返回List数据Map<String,Object>
    java axis2解析xml(wsdl返回List数据Map<String,String>
    java axis2解析xml(wsdl返回List数据)
    jquery 合并单元格,rowspan
    poi导出excel
  • 原文地址:https://www.cnblogs.com/10manongit/p/12916022.html
Copyright © 2011-2022 走看看