app.js中定义的变量是否可以通过Express和node js中的路径中的函数访问?

时间:2014-05-15 19:18:09

标签: node.js mongodb express mongoose

我使用express js进行编码,我注意到我在app.js

中声明了这一点
  var mongoose = require ('mongoose'); 
  var db =mongoose.connect('mongodb://localhost/testdb');

然后在我的/models/userSchema.js

 var mongoose = require('mongoose');
 var users = mongoose.model('users',UserSchema);
 module.exports = users;

但是在我的routes / upload.js

var mongoose = require ('mongoose');
var db =mongoose.connect('mongodb://localhost/testdb');`
//some code

mongoose.model('users').find(); 

//这知道我正在访问名为“testdb”的数据库

我不确定为什么这会像upload.js和userSchema.js中执行的代码如何知道我使用的数据库是testdb。这个声明不是var mongoose = require('mongoose');创建一个与app.js中的对象分开的新对象?

2 个答案:

答案 0 :(得分:0)

猫鼬是单身人士。那是当您再次需要它时,您将获得首次初始化的实例。

应用程序级别变量在其他模块中不可见。有一些方法可以传递应用程序对象我的潮流模块。

答案 1 :(得分:0)

在node.js中,加载require的模块为cached,因此在两个不同文件中调用require('mongoose')会返回mongoose模块的相同实例。

因此,虽然一个文件中的变量无法在其他文件中直接访问,但同一模块中的变量在require该模块的文件之间有效共享。