2015-08-25 210 views
2

我注意到,像
Mockgoose某些庫(https://github.com/mccormicka/Mockgoose/blob/master/test/index.spec.js
使用要求( '貓鼬')。貓鼬申報的實例貓鼬是這樣的:差異要求( '貓鼬')。貓鼬和require( '貓鼬')

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'); 

我只是想知道如果有之間的差異這兩種獲取貓鼬實例的方法,或者他們是兩種不同的方式來獲得相同的東西。

謝謝

回答

3

這兩者之間是有區別的。

require('mongoose')返回Mongoose一個實例,new require('mongoose').Mongoose給你Mongoose一個新的實例,它是不是一個從require('mongoose')返回相同的實例。後者是有用的,當你的應用程序的特定部分需要它自己的貓鼬的實例不與其他休息(這使得它非常適合單元測試)

在一個典型的應用程序,雖然你只是想簡單地使用require('mongoose')這樣你就可以在任何地方使用require('mongoose'),你會得到同樣的實例。

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

+0

感謝您的快速回復! – ColdMonkey