在其他文件中重用moongoose连接

时间:2015-07-03 03:23:14

标签: node.js mongoose singleton

我意识到mongoose是一个单例,一旦你在一个文件中执行mongoose.connect,之后所有需要此文件的脚本也会连接mongoose。

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

1 个答案:

答案 0 :(得分:1)

<强>已更新

以下是我的/ lib目录

中的文件示例:myLib.js
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”),这就是猫鼬连接活跃的原因。

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

它就像一个单身,所以你不需要创建自己的连接参考。