zoukankan      html  css  js  c++  java
  • mongoose 数据库操作


    使用mongoose 加入分页方法,临时还没发现什么更好的方法,我使用的方法是,直接在源代码中加入


    找到 node_modules/mongoose/lib/model.js打开这个文件。里面加入这段代码



    /**
     * author:gtt
     * updateTime:2014-5-3 
     */
    Model.execPageQuery = function find (currentPage,pageSize, conditions, fields, options, callback) {
    	 if ('function' == typeof conditions) {
       	    callback = conditions;
       	    conditions = {};
       	    fields = null;
       	    options = null;
       	  } else if ('function' == typeof fields) {
       	    callback = fields;
       	    fields = null;
       	    options = null;
       	  } else if ('function' == typeof options) {
       	    callback = options;
       	    options = null;
       	  }
    	//var countLine = 20;// 总行数
    	//var countPage = (countLine + pageSize-1 )/pageSize;// 总页数
    	var StartLine = (currentPage -1)*pageSize;
    	var m = this;
    	async.parallel([
            function(cb) {
            	m.count({},cb);
            },      
            function(cb) {
          	  if ('function' == typeof conditions) {
          		m.find({}).limit(pageSize).skip(StartLine).exec(cb);
          	  } else if ('function' == typeof fields) {
          		 m.find(conditions).limit(pageSize).skip(StartLine).exec(cb);
          	  } else if ('function' == typeof options) {
          		m.find(conditions,fields).limit(pageSize).skip(StartLine).exec(cb);
          	  }else{
          		m.find(conditions,fields,options).limit(pageSize).skip(StartLine).exec(cb);
          	  }
            }
        ], function(err,rs){
    		
    		var page = {};//总页数 总条数 集合
    		if('number' == typeof rs[0]){
    			page.total = rs[0];
    			page.rows =  rs[1];
    		}else{
    			page.total = rs[1];
    			page.rows =  rs[2];
    		}
    		callback(err,page);
    	});
    }
    调用方法:


    var assert = require('assert')
    var util=require('util');
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    var ObjectId = mongoose.Types.ObjectId;
    
    
    
    mongoose.connect('mongodb://localhost:8888/test');
    mongoose.connection.on('error', function() {
    	console.error('connection error', arguments);
    });
    
    
    var PersonSchema = new Schema({
        name : String
      });
    
    var Person = mongoose.model('Person', PersonSchema,'Person');
    
    
    
    Person.execPageQuery(1,100,function(err,rel){
    	console.dir(rel);
    });



    成天都在实现这样的烂玩意,啥时候自己也搞一套牛逼的。


  • 相关阅读:
    索引,约束
    C# Dictionary 的几种遍历方法
    唯一性约束和唯一性索引的区别
    JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
    Dictionary学习笔记嵌套Dictionary的遍历与排序(按Key值)(二)
    Dictionary学习笔记Dictionary定义与输出(一)
    集体智慧编程笔记搜索和排序
    emacs键盘映射
    集体智慧编程笔记推荐系统
    使用SRILM训练大的语言模型
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5173107.html
Copyright © 2011-2022 走看看