我使用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中的对象分开的新对象?
答案 0 :(得分:0)
猫鼬是单身人士。那是当您再次需要它时,您将获得首次初始化的实例。
应用程序级别变量在其他模块中不可见。有一些方法可以传递应用程序对象我的潮流模块。
答案 1 :(得分:0)
在node.js中,加载require
的模块为cached,因此在两个不同文件中调用require('mongoose')
会返回mongoose
模块的相同实例。
因此,虽然一个文件中的变量无法在其他文件中直接访问,但同一模块中的变量在require
该模块的文件之间有效共享。