我意识到mongoose是一个单例,一旦你在一个文件中执行mongoose.connect
,之后所有需要此文件的脚本也会连接mongoose。
但是,这不应该意味着当我执行另一个只有require('mongoose')
的测试脚本时它会显示我也连接到mongodb因为前一个脚本(启动一个http服务器)仍在运行我在node_modules
内引用了同一个猫鼬?谢谢。
答案 0 :(得分:1)
<强>已更新强>
以下是我的/ lib目录
中的文件示例:myLib.jsexports.someVar = [5,4,3,2,1];
exports.printSize = function(){
console.log(exports.someVar.length);
}
现在让我们创建一个名为app.js的其他文件并包含myLib.js:
var myLib = require("./lib/myLib.js");
var http = require("./http.js");
console.log("app.js:");
myLib.printSize(); // will print 5
myLib.someVar.push(100);
console.log("app.js:");
myLib.printSize(); // will print 6
console.log("calling http");
http.start();
console.log("app.js:");
myLib.printSize(); // will print 7
好的,现在让我们创建一个名为http.js
的其他文件并包含myLib.js:
var myLib = require("./lib/myLib.js");
exports.start = function(){
console.log("http.js:");
myLib.printSize(); // will print 6
myLib.someVar.push(200);
}
现在让我们为myLib.js创建一个项目并替换所有行:
var myLib = require("./lib/myLib.js");
为:
var myLib = require("myLib");
结果将是相同的,即使你在项目的其他部分使用require(“mongoose”),这就是猫鼬连接活跃的原因。
创建连接后,该变量将可用于项目的其他部分。
它就像一个单身,所以你不需要创建自己的连接参考。