我注意到某些图书馆像是
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');
我只是想知道获取一个猫鼬实例的这两种方法之间是否有区别,或者它们实际上是两种不同的方式来获得相同的东西。
由于
答案 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