У вас есть user.js, загруженный до того, как initMongo действительно произойдет. Таким образом, mongoDB будет содержать неопределенное значение для переменной getDb.
Самый простой из возможных способов рефакторинга - просто изменить getDb с переменной на функцию, чтобы ваш код выглядел примерно так:
common_mongo.js
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'onthemove';
let db;
const initMongo = async () => {
const client = await MongoClient.connect(url);
db = await client.db(dbName);
await db.collection('comments').insert({text: 'hello'});
};
module.exports = {
initMongo,
getDb() {
return db;
},
};
user.js
const mongoDB = require('./common_mongo.js');
app.get('/users', async (req, res) => {
let list = await mongoDB.getDb().collection('user').find({})
res.send(list);
})
еще дальше вы можете определить геттер вместо getDb
module.exports = {
initMongo,
get db() {
return db;
},
};
app.get('/users', async (req, res) => {
let list = await mongoDB.db.collection('user').find({})
res.send(list);
})