在其他文件中重用 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 连接仍处于活动状态的原因。
创建连接后,变量将可用于项目的其他部分。
它就像一个单例,因此您无需创建自己的单例来保存连接引用。
我知道 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 连接仍处于活动状态的原因。
创建连接后,变量将可用于项目的其他部分。
它就像一个单例,因此您无需创建自己的单例来保存连接引用。