我使用快递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中的对象分开的新对象?
在node.js中,加载了模块的文件require
被缓存,以便require('mongoose')
在两个不同的文件中调用将返回该mongoose
模块的相同实例。
因此,虽然一个文件中的变量不能在其他文件中直接访问,但是同一模块内的变量在该模块的文件之间有效地共享require
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句