Node.js 模块将mongodb导出到另一个文件-哪种方法正确?(在nodejs中)
我在db.js中有以下代码: const mongoClient=require'mongodb'。mongoClient; const dotenv=requiredotenv; dotenv.config; const mongoDbUrl=process.env.CONNECTIONSTRING; mongoClient.connectmongoDbUrl,{useNewUrlParser:true,useUnifiedTopology:true},err,db=>{ module.exports=db; }; 然后,我想将它添加到文件User.js中 ,但我得到一个空对象: {} 让User.js接收mydb的正确代码是什么Node.js 模块将mongodb导出到另一个文件-哪种方法正确?(在nodejs中),node.js,mongodb,require,module.exports,Node.js,Mongodb,Require,Module.exports,我在db.js中有以下代码: const mongoClient=require'mongodb'。mongoClient; const dotenv=requiredotenv; dotenv.config; const mongoDbUrl=process.env.CONNECTIONSTRING; mongoClient.connectmongoDbUrl,{useNewUrlParser:true,useUnifiedTopology:true},err,db=>{ module.exp
顺便说一句,控制台在db.js中记录db会返回我需要的内容 请求是同步的,而连接是异步的。它最终会出现,但您应该做的是导出一个具有异步init函数的对象,然后在启动期间调用该函数,以确保运行代码的其余部分在此之后发生。基本上,您不应该在模块中运行任何代码,而应该只导出值
// db.js
const mongoClient = require('mongodb').MongoClient;
const dotenv = require("dotenv");
class Db {
async init() {
dotenv.config();
const mongoDbUrl = process.env.CONNECTIONSTRING;
this.db = await mongoClient.connect(mongoDbUrl, { useNewUrlParser: true, useUnifiedTopology: true }
}
}
module.exports = new Db()
然后在您的呼叫代码中:
// main.js
const db = require('./db')
const app = require('./app')
async function main() {
await db.init()
await app.run()
}
main().then(() => console.log('done.')).catch(console.error)
谢谢,但是我在main.thenresult=>console.logresult中得到了一个“未定义”的响应;一定是出了什么事在这种情况下,main的结果将是未定义的。。。但是您使用的是异步/等待吗?这主要是psuedo代码。祝你好运
// main.js
const db = require('./db')
const app = require('./app')
async function main() {
await db.init()
await app.run()
}
main().then(() => console.log('done.')).catch(console.error)