www.91084.com

GVKun编程网logo

获得Mongoose的最大值

13

本文将为您提供关于获得Mongoose的最大值的详细介绍,同时,我们还将为您提供关于egg(25)--mongoose索引,扩展MongooseModel的静态方法和实例方法、Egg中使用egg-mo

本文将为您提供关于获得Mongoose的最大值的详细介绍,同时,我们还将为您提供关于egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法、Egg中使用egg-mongoose和常用的Mongoose 方法、egg学习笔记第二十三天:mongoose入门以及mongoose实现数据的增删改查、javascript – 从nodejs到mongodb或mongoose的动态数据库连接的实用信息。

本文目录一览:

获得Mongoose的最大值

获得Mongoose的最大值

如何在Mongoose查询中获得最大值。在SQL中很容易

SELECT MAX(LAST_MOD) FROM table1Where field1=1

我想在Mongoose(node.js)中等效上述SQL代码

答案1

小编典典

MongoDB支持最大/最小,但他们不建议在实际应用中使用它:

min和max主要用于支持mongos(分片)过程。

http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

您几乎可以得到与以下结果相同的结果:

Model.findOne({ field1 : 1 }).sort(last_mod, 1).run( function(err, doc) {     var max = doc.last_mod;});

egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法

egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法

索引

索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更
快。MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询
优化技巧

user.js
var mongoose = require(''./db.js'');
var UserSchema = mongoose.Schema({
    name:String,
    sn:{
        type:String,
    },
    age:Number,
    status:{
        type:Number,
        default:1
    }
})

//定义model操作数据库
// var UserModel = mongoose.model(''User'',UserSchema); //将生成users表
var UserModel = mongoose.model(''User'',UserSchema,''user'');
module.exports = UserModel

查找user表的索引

db.user.getIndexes()

clipboard.png

增加字段sn的索引

    sn:{
        type:String,
        index:true
    },
user.js
var mongoose = require(''./db.js'');
var UserSchema = mongoose.Schema({
    name:String,
    sn:{
        type:String,
        index:true
    },
    age:Number,
    status:{
        type:Number,
        default:1
    }
})

//定义model操作数据库
// var UserModel = mongoose.model(''User'',UserSchema); //将生成users表
var UserModel = mongoose.model(''User'',UserSchema,''user'');
module.exports = UserModel

查找索引

clipboard.png

扩展Mongoose Model的静态方法

user.js
增加UserSchema.statics.findBySn
var mongoose = require(''./db.js'');
var UserSchema = mongoose.Schema({
    name:String,
    sn:{
        type:String,
        index:true
    },
    age:Number,
    status:{
        type:Number,
        default:1
    }
})

UserSchema.statics.findBySn=function(sn,cb){
    this.find({"sn":sn},function(err,docs){
        cb(err,docs)
    })
}

//定义model操作数据库
// var UserModel = mongoose.model(''User'',UserSchema); //将生成users表
var UserModel = mongoose.model(''User'',UserSchema,''user'');
module.exports = UserModel
index.js

先增加sn=123456的数据

var user = new UserModel({
    name:''标题3'',
    age:20,
    sn:"123456"
})
user.save(function(err,doc){
    if(err){
        console.log(err);
        return;
    }
    console.log(doc)
})

使用UserSchema.statics.findBySn方法

var UserModel = require(''./user.js'');
//静态方法
UserModel.findBySn(''123456'', function (err, doc) {
    if (err) {
        console.log(err);
        return;
    }
    console.log(doc)
})

运行

clipboard.png

Egg中使用egg-mongoose和常用的Mongoose 方法

Egg中使用egg-mongoose和常用的Mongoose 方法

Mongoose

Mongoose就是一套操作MongoDB数据库的接口,而Egg中有对应的插件egg-mongoose。

安装

$ npm install egg-mongoose --save

配置

改变Egg项目中的配置文件{workplace}/config/plugin.js中来启用 egg-mongoose 插件:

exports.mongoose = {
  enable: true,
  package: ''egg-mongoose'',
};

Egg连接mongoose

在Egg项目中的配置文件{workplace}/config/default.js配置项config添加属性

config.mongoose = {
    url: process.env.EGG_MONGODB_URL || ''mongodb://127.0.0.1/website'',
    options: {
      server: {
        poolSize: 40,
      },
    },
  };

定义数据表

在{workplace}/app/model/article.js定义数据表

''use strict'';
module.exports = app => {
  const mongoose = app.mongoose;
  const Schema = mongoose.Schema;
  const PostSchema = new Schema({
    wid: {
      type: String,
    },
    release: {
      type: Boolean,
    },
    sort: {
      type: Number,
    },
    img: {
      type: String, }, abstract: { type: String, }, text: { type: String, }, isSetTop: { type: Number, }, title: { type: String, }, keywords: { type: String, }, describe: { type: String, }, updateTime: { type: Date, }, num: { type: Number, }, uid: { type: String, }, editors: { type: String, }, disable: { type: Boolean, }, columnId: { type: Schema.Types.ObjectId, }, }); return mongoose.model(''Article'', PostSchema); }; 

备注:其中type表示字段类型,Mongoose 有以下几种类型Number(数字),String(字符串),Boolean(布尔值),ObjectId(对象ID),Array(数组),Object(对象),Date(日期)。。。

常用的Mongoose 方法

一,增加数据

this.ctx.model.Article.create(post,callback);

备注:其中post为json数据结构,callback为操作后的回调函数

二,查询数据

1,获取所有数据,返回是一个数组

this.ctx.model.Article.find()

2,获取一个数据,返回是一个对象

this.ctx.model.Article.findOne()

3,条件查询

this.ctx.model.Article.find(conditions,callback);

condition有以下几种类型

1),根据具体数据进行查询

this.ctx.model.Article.find({_id:5c4a819fb87ba4002a47bc4f,title:"123"},callback);
  • 返回_id为5c4a819fb87ba4002a47bc4f,title为123的结果

2),条件查询

"$lt"	小于
"$lte"	小于等于
"$gt" 大于 "$gte" 大于等于 "$ne" 不等于 
this.ctx.model.Article.find({“sort”:{ $get:18 , $lte:30 });
  • 返回Article表中sort 大于等于18并小于等于30的结果

3),或查询 OR

"$in" 一个键对应多个值
"$nin" 同上取反, 一个键不对应指定值
"$or" 多个条件匹配, 可以嵌套 $in 使用 "$not" 同上取反, 查询与特定模式不匹配的文档 
this.ctx.model.Article.find({"title":{ $in:[20,21,22."haha"]} );
  • 返回Article表中title等于20或21或21或"haha"的结果
this.ctx.model.Article.find({"$or" :  [ {"age":18} , {"name":"wxw"} ] }); 
  • 返回Article表中age等于18或 name等于"wxw"的结果

4),类型查询("$exists"条件判定)

this.ctx.model.Article.find({name: {$exists: true}},function(error,docs){
  //返回Article表中所有存在name属性的结果
});
this.ctx.model.Article.find({telephone: {$exists: false}},function(error,docs){
  //返回Article表中所有不存在telephone属性的结果
});

5),匹配正则表达式查询

MongoDb 是使用 Prel兼容的正则表达式库来匹配正则表达式

this.ctx.model.Article.find( {"name" : /joe/i } );
  • 返回Article表中name为 joe 的结果, 并忽略大小写

6),查询数组

this.ctx.model.Article.find({"array":10} );
  • 返回Article表中array(数组类型)键中有10的文档, array : [1,2,3,4,5,10] 会匹配到
this.ctx.model.Article.find({"array[5]":10}  );
  • 返回Article表中array(数组类型)键中下标5对应的值是10, array : [1,2,3,4,5,10] 会匹配到
this.ctx.model.Article.find({"array":[5,10]});
  • 返回Article表中查询匹配array数组中既有5又有10的结果
this.ctx.model.Article.find({"array":{$size : 3} });
  • 返回Article表中查询匹配array数组长度为3 的的结果
this.ctx.model.Article.find({"array":{$slice : 10} });
  • 返回Article表中查询匹配array数组的前10个元素
this.ctx.model.Article.find({"array":{$slice :  [5,10]} });
  • 返回Article表中查询匹配array数组的第5个到第10个元素

7),where

用它可以执行任意javacript语句作为查询的一部分,如果回调函数返回 true 文档就作为结果的一部分返回

this.ctx.model.Article.find( {"$where" :  "this.x + this.y === 10" } );
this.ctx.model.Article.find( {"$where" : " function(){ return this.x + this.y ===10; } " } ) 
  • 其中this为数据表中的数据,上述返回Article表中属性x+属性y=10的所有数据

三,删除数据

this.ctx.model.Article.remove(conditions,callback);

备注:conditions为查询条件,与查询数据介绍的一样,eg:{ _id:5c4a819fb87ba4002a47bc4f },找到_id为5c4a819fb87ba4002a47bc4f的数据,callback为操作成功后的回调函数

四,更新数据

this.ctx.model.Article.update(conditions, update, callback)
  • 参数1:查询条件, 参数2:更新对象,可以使用MondoDB的更新修改器

备注:conditions与查询数据中介绍的一样

1,update为更新对象

let post = {
    wid: ''5c492c57acbe363fd4824446'',
    column: [ ''新闻'' ],
    titleHead: '''',
    img: '''', isAbstract: ''false'', } this.ctx.model.Article.update({ _id: ''5c4a819fb87ba4002a47bc4f '' }, post) 
  • 查询Article表中特定_id,并对post中所包含的属性进行更新。

2,update使用MondoDB的更新修改器,有以下几种使用场景

1),"$inc"增减修改器,只对数字有效

this.ctx.model.Article.update({"age":22}, {$inc:{"age":1} }  );
  • 找到age=22的文档,修改文档的age值自增1

2),''$set'' 指定一个键的值,这个键不存在就创建它.可以是任何MondoDB支持的类型.

this.ctx.model.Article.update({ _id:5c4a819fb87ba4002a47bc4f }, { $set: { isDelete: true } });
  • 对5c4a819fb87ba4002a47bc4f 表进行软删除,找到特定_id数据,增加或者修改isDelete属性

3),"$unset"同上取反,删除一个键

this.ctx.model.Article.update({age:22}, {$unset:{age:18} } );
  • 执行后age键不存在

4),''$push''给一个键push一个数组成员,键不存在会创建,对数组有效

this.ctx.model.Article.update({name:''wxw''}, {$push:{array:10} } );
  • 返回Article表中name为wxw的数据,增加一个array键,类型为数组,有一个成员 10

5),''$addToSet''向数组中添加一个元素,如果存在就不添加

this.ctx.model.Article.update({name:''wxw''},{$addToSet:{array:10} } );
  • 返回Article表中name为wxw的数据,array中有10所以不会添加

6),''$each''遍历数组和 $push 修改器配合可以插入多个值

this.ctx.model.Article.update({name:''wxw''}, {$push:{array:{$each: [1,2,3,4,5]}} } );
  • 返回Article表中name为wxw的数据,执行后array : [10,1,2,3,4,5]

7),''$pop'' 向数组中尾部删除一个元素

this.ctx.model.Article.update({name:''wxw''}, {$pop:{array:1} } );
  • 返回Article表中name为wxw的数据,其中array : [10,1,2,3,4,5],执行后 array : [10,1,2,3,4]
  • tip:将1改成-1可以删除数组首部元素

8),''$pull'' 向数组中删除指定元素

this.ctx.model.Article.update({name:''wxw''}, {$pull:{array:10} });
  • 返回Article表中name为wxw的数据,匹配到array中的10后将其删除。

五,排序(sort)

this.ctx.model.Article.sort({ isSetTop: -1, sort: 1, editTime: -1 });
  • 对Article表中的数据进行排序,先按“isSetTop”降序,再按“sort”升序,最后按“editTime”降序

备注:键对应数据中的键名,值代表排序方向,1 升序, -1降序。

六,限制返回结果的数量(limit)

this.ctx.model.Article.limit(3);
  • 对Article表中的数据进行返回,返回为前面3条数据

七,跳过前3个文档,返回其余的(skip)

this.ctx.model.Article.skip(3);
  • 对Article表中的数据进行返回,跳过前面3条数据,返回其余数据

附:综合使用最后三个方法进行分页查询

this.ctx.model.Article.find({ _id:5c4a819fb87ba4002a47bc4f }).skip(pageSize * (pageNum - 1)).limit(parseInt(pageSize)).sort({ isSetTop: -1, sort: 1, editTime: -1 });
  • 其中pageSize和pageNum为动态传递数据,返回Article表中特定_id在每页数据为pageSize条件下的第pageNum页中的数据,并按照“isSetTop”降序,再按“sort”升序,最后按“editTime”降序进行排序。

egg学习笔记第二十三天:mongoose入门以及mongoose实现数据的增删改查

egg学习笔记第二十三天:mongoose入门以及mongoose实现数据的增删改查

一、mongoose介绍

Mongoose实在nodejs异步环境下对MongoDB进行便捷操作的对象模型工具。Mongoose是nodejs的驱动,不能作为其他语言的驱动。

mongoose有两个特点:

1、通过关系型数据库的思想来设计非关系型数据库。

2、基于MongoDB驱动,简化操作。

二、使用Mongoose

1、新建mongoose文件夹,文件夹下新建mongoose_demo.js文件

2、执行npm init -y,生成package.json文件

cnpm init -y

3、安装mongoose

cnpm i mongoose --save

目录结构如下所示:

④mongoose_demo.js里面键入:

const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/eggcms");

// 如果有账户密码需要采用下面的连接方式:
// mongoose.connect(''mongodb://eggadmin:123456@localhost:27017/eggcms'');

⑤定义 Schema:

数据库中的 Schema,为数据库对象的集合。schema 是 mongoose 里会用到的一种数据模式, 可以理解为表结构的定义;每个 schema 会映射到 mongodb 中的一个 collection,它不具备操作数据库的能力。

定义一个动漫表的Schema:

⑥定义模型

定义好了Schema,接下就是生成Model。model是由schema生成的模型,可以对数据库的操作。

注意:mongoose.model 里面可以传入两个参数也可以传入三个参数

mongoose.model(参数 1:模型名称(首字母大写),参数 2:Schema)

mongoose.model(参数 1:模型名称(首字母大写),参数 2:Schema, 参数 3:数据库集合名称)

如果传入 2 个参数的话:这个模型会和模型名称相同的复数的数据库建立连接: 一般用第二种传入 3 个参数的话:模型默认操作第三个参数定义的集合名称

// 1、引入mongoose
const mongoose = require("mongoose");

// 2、连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/eggcms");

// 如果有账户密码需要采用下面的连接方式:
// mongoose.connect(''mongodb://eggadmin:123456@localhost:27017/eggcms'');

// 3、操作动漫表(集合)  定义一个Schema 对字段的格式可以进行一些验证 Schema里的对象和数据库表里面的字段需要一一对应
var DongManSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
});

// 定义model
var DongMan = mongoose.model("DongMan", DongManSchema, dongman);

⑦给dongman表中增加一条数据:键入如下代码,执行 node mongoose_demo.js

// 1、引入mongoose
const mongoose = require("mongoose");

// 2、连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/eggcms");

// 如果有账户密码需要采用下面的连接方式:
// mongoose.connect(''mongodb://eggadmin:123456@localhost:27017/eggcms'');

// 3、操作动漫表(集合)  定义一个Schema 对字段的格式可以进行一些验证 Schema里的对象和数据库表里面的字段需要一一对应
var DongmanSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
});

// 定义model,操作数据库
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

// 增加数据
// 实例化Model, DongMan Model 创建增加的数据
// 实例.save()
var dongman = new DongMan({
  name: "犬夜叉",
  age: 18,
  status: 0
});
dongman.save(function(err) {
  if (err) {
    console.log(err);
    return;
  }
  console.log("成功");
});

可以看到数据库可视化工具中多了一条数据。

⑧查询表中的数据:

// 定义model,操作数据库
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

// 查询dongman表中的数据;
DongMan.find({}, function(err, doc) {
  if (err) {
    console.log(err);
    return;
  }
  console.log(doc);
});

⑨修改表中的数据,找到指定Id的数据,将name犬夜叉变为name火影忍者。

// 定义model,操作数据库
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

DongMan.updateOne(
  {
    _id: "5ea99dd5edd15105512ad7fa"
  },
  {
    name: "火影忍者"
  },
  function(err, doc) {
    if (err) {
      return console.log(err);
    }
    console.log("成功");
  }
);

查看GUI工具,可得数据已更新

 

⑩删除数据,删除指定id数据。

// 定义model,操作数据库
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

// 删除数据
DongMan.deleteOne({ _id: "5ea99dd5edd15105512ad7fa" }, (err, res) => {
  if (err) {
    return console.log(err);
  }
  console.log(res);
});

GUI刷新后,发现数据被清空

 

感觉都是些傻瓜式操作,但是还是要熟悉的。GG晚安思密达。

javascript – 从nodejs到mongodb或mongoose的动态数据库连接

javascript – 从nodejs到mongodb或mongoose的动态数据库连接

我正在尝试创建一个多租户应用程序(saas),每个客户端都有自己的数据库.

我的情况是:

我创建了一个中间件,可以确定客户端是基于子域,然后从通用数据库检索客户端的数据库连接信息.我不知道如何为这个客户端建立一个连接对象,以便能够在我的控制器中使用.我应该在中间件还是控制器中这样做?如果它在模型中,我如何传递连接字符串和参数(我可以使用会话,但我不知道如何从模型中访问会话).

我如何执行以下操作?

>组织:动态地为客户端创建数据库连接?
>将连接参数注入控制器或型号(连接定义)
>动态连接完成后,如何在全局访问该客户端?

这是我的中间件的一个例子,我想创建一个我想要动态(传递客户端的连接信息)的一个mongoose连接:

function clientlistener() {
    return function (req,res,next) {
       console.dir('look at my sub domain  ' + req.subdomains[0]);
       // console.log(req.session.Client.name);

    if (req.session.Client && req.session.Client.name === req.subdomains[0]) {
          var options = session.Client.options;
          var url = session.Client.url
          var conn = mongoose.createConnection(url,options);
          next();
       }
    }
}

如何从控制器内部访问此连接对象?还是从模特儿?

谢谢.

解决方法

这是为了帮助那些可能发现自己处于类似情况的人.我希望能够标准化.我不认为每当有人需要多租户申请时,我们应该重新发明.

此示例描述了每个客户端都有自己的数据库的多租户结构.
就像我说的,可能会有一个更好的方法来做,但是因为我没有得到帮助,这是我的解决方案.

所以这里是这个解决方案的目标:

>每个客户端都由子域标识,例如client1.application.com,
>应用程序检查子域是否有效,
>应用程序查找并从主数据库获取连接信息(数据库URL,凭据等)
>应用程序连接到客户端数据库(几乎交给客户端),
>应用程序采取措施确保完整性和资源管理(例如,为同一客户端的成员使用相同的数据库连接,而不是进行新的连接).

这是代码

在你的app.js文件中

app.use(clientListener()); // checks and identify valid clients
app.use(setclientdb());// sets db for valid clients

我创造了两个工具:

> clientListener – 识别客户端连接,
> setclientdb – 在客户端被识别后,从主数据库获取客户端详细信息,然后建立与客户端数据库的连接.

clientListener中间件

通过从请求对象中检查子域来检查客户端是谁.我做了一堆检查,以确保客户端是有效的(我知道代码是凌乱的,可以做得更干净).确保客户端有效后,我将客户端信息存储在会话中.我还检查,如果客户端信息已经存储在会话中,则不需要再次查询数据库.我们只需要确保请求子域名与已存储在会话中的请求子域名相匹配.

var Clients = require('../models/clients');
var basedomain = dbConfig.baseDomain;
var allowedSubs = {'admin':true,'www':true };
allowedSubs[basedomain] = true;
function clientlistener() {
return function(req,next) {
    //console.dir('look at my sub domain  ' + req.subdomains[0]);
    // console.log(req.session.Client.name);

    if( req.subdomains[0] in allowedSubs ||  typeof req.subdomains[0] === 'undefined' || req.session.Client && req.session.Client.name === req.subdomains[0] ){
        //console.dir('look at the sub domain  ' + req.subdomains[0]);
        //console.dir('testing Session ' + req.session.Client);
        console.log('did not search database for '+ req.subdomains[0]);
        //console.log(JSON.stringify(req.session.Client,null,4));
        next();
    }
    else{

        Clients.findOne({subdomain: req.subdomains[0]},function (err,client) {
            if(!err){
                if(!client){
                    //res.send(client);
                    res.send(403,'Sorry! you cant see that.');
                }
                else{
                    console.log('searched database for '+ req.subdomains[0]);
                    //console.log(JSON.stringify(client,4));
                    //console.log(client);
                   // req.session.tester = "moyo cow";
                    req.session.Client = client;
                    return next();

                }
            }
            else{
                console.log(err);
                return next(err)
            }

        });
    }

   }
 }

module.exports = clientlistener;

setclientdb中间件:

我再次检查一下,确保客户端有效.然后打开与会话检索的信息到客户端数据库的连接.

我还确保将所有活动连接存储到全局对象中,以便在每次请求时阻止与数据库的新连接(我们不想使用连接来覆盖每个客户端的mongodb服务器).

var mongoose = require('mongoose');
//var dynamicConnection = require('../models/dynamicMongoose');
function setclientdb() {
    return function(req,next){
        //check if client has an existing db connection                                                               /*** Check if client db is connected and pooled *****/
    if(/*typeof global.App.clientdbconn === 'undefined' && */ typeof(req.session.Client) !== 'undefined' && global.App.clients[req.session.Client.name] !== req.subdomains[0])
    {
        //check if client session,matches current client if it matches,establish new connection for client
        if(req.session.Client && req.session.Client.name === req.subdomains[0] )
        {
            console.log('setting db for client ' + req.subdomains[0]+ ' and '+ req.session.Client.dbUrl);
            client = mongoose.createConnection(req.session.Client.dbUrl /*,dbconfigoptions*/);


            client.on('connected',function () {
                console.log('Mongoose default connection open to  ' + req.session.Client.name);
            });
            // When the connection is disconnected
            client.on('disconnected',function () {
                console.log('Mongoose '+ req.session.Client.name +' connection disconnected');
            });

            // If the Node process ends,close the Mongoose connection
            process.on('SIGINT',function() {
                client.close(function () {
                    console.log(req.session.Client.name +' connection disconnected through app termination');
                    process.exit(0);
                });
            });

            //If pool has not been created,create it and Add new connection to the pool and set it as active connection

            if(typeof(global.App.clients) === 'undefined' || typeof(global.App.clients[req.session.Client.name]) === 'undefined' && typeof(global.App.clientdbconn[req.session.Client.name]) === 'undefined')
            {
                clientname = req.session.Client.name;
                global.App.clients[clientname] = req.session.Client.name;// Store name of client in the global clients array
                activedb = global.App.clientdbconn[clientname] = client; //Store connection in the global connection array
                console.log('I am Now in the list of active clients  ' + global.App.clients[clientname]);
            }
            global.App.activdb = activedb;
            console.log('client connection established,and saved ' + req.session.Client.name);
            next();
        }
        //if current client,does not match session client,then do not establish connection
        else
        {
            delete req.session.Client;
            client = false;
            next();
        }
    }
    else
    {
        if(typeof(req.session.Client) === 'undefined')
        {
           next();
        }
        //if client already has a connection make it active
        else{
            global.App.activdb = global.App.clientdbconn[req.session.Client.name];
            console.log('did not make new connection for ' + req.session.Client.name);
            return next();
        }

    }
    }
}

module.exports = setclientdb;

最后但是同样重要的

由于我使用的是黑猫和本地mongo的组合,我们必须在运行时编译我们的模型.请参阅下文

将其添加到您的app.js

// require your models directory
var models = require('./models');

// Create models using mongoose connection for use in controllers
app.use(function db(req,next) {
    req.db = {
        User: global.App.activdb.model('User',models.agency_user,'users')
        //Post: global.App.activdb.model('Post',models.Post,'posts')
    };
    return next();
});

说明:

就像我之前所说的,我创建了一个全局对象来存储活动数据库连接对象:global.App.activdb

然后我使用此连接对象来创建(编译)mongoose模型,之后我将它存储在req对象的db属性中:req.db.我这样做,以便我可以在我的控制器中访问我的模型,例如.

我的用户控制器示例:

exports.list = function (req,res) {
    req.db.User.find(function (err,users) {

        res.send("respond with a resource" + users + 'and connections  ' + JSON.stringify(global.App.clients,4));
        console.log('Worker ' + cluster.worker.id + ' running!');
    });

};

最后我会回来清理一下.如果有人想帮助我,那就好了

今天关于获得Mongoose的最大值的分享就到这里,希望大家有所收获,若想了解更多关于egg(25)--mongoose索引 ,扩展Mongoose Model的静态方法和实例方法、Egg中使用egg-mongoose和常用的Mongoose 方法、egg学习笔记第二十三天:mongoose入门以及mongoose实现数据的增删改查、javascript – 从nodejs到mongodb或mongoose的动态数据库连接等相关知识,可以在本站进行查询。

本文标签: