基于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);
    }
    原文作者:luckyGDD
    原文地址: https://segmentfault.com/a/1190000007737835
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞