require('mongoose')之间的区别.Mongoose和require('mongoose')

时间:2015-08-25 20:42:36

标签: node.js mongodb mongoose

我注意到某些图书馆像是 Mockgoose(https://github.com/mccormicka/Mockgoose/blob/master/test/index.spec.js
使用require('mongoose')。Mongoose声明像这样的猫鼬实例:

var Mongoose = require('mongoose').Mongoose;
var mongoose = new Mongoose();
var db = mongoose.connect('mongodb://localhost:27017/TestingDB');

但是,我在网上看到的大多数例子都是为了连接到数据库:

var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost:27017/TestingDB');

我只是想知道获取一个猫鼬实例的这两种方法之间是否有区别,或者它们实际上是两种不同的方式来获得相同的东西。

由于

1 个答案:

答案 0 :(得分:4)

两者之间存在差异。

require('mongoose')返回Mongoose的实例,new require('mongoose').Mongoose为您提供Mongoose的新实例,该实例与{{1}返回的实例不同}}。当应用程序的某个特定部分需要它自己的mongoose实例时,后者非常有用,它不会与其他部分发生冲突(这使得它非常适合单元测试)

在典型的应用程序中,虽然您只想使用require('mongoose'),但在使用require('mongoose')的任何地方时,您都会获得相同的实例。

https://github.com/Automattic/mongoose/blob/master/lib/index.js#L520