在其他文件中重用 moongoose 连接

reuse moongoose connection in other files

我知道 mongoose 是一个单例,一旦您在一个文件中执行 mongoose.connect,之后所有需要该文件的脚本也将连接 mongoose。

但这不应该意味着当我执行另一个只有 require('mongoose') 的测试脚本时,它会显示我也连接到 mongodb 因为前一个脚本(启动一个http 服务器)仍然是 运行 而我在 node_modules 中引用同一个猫鼬?谢谢。

已更新

这是一个文件示例:myLib.js 在我的 /lib 目录中

exports.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") 时 mongoose 连接仍处于活动状态的原因。

创建连接后,变量将可用于项目的其他部分。

它就像一个单例,因此您无需创建自己的单例来保存连接引用。