Node.js 设置DB数据后在nodejs中加载模块
我的最终目标是让module.exports包含一些在app init期间加载的DB值 我试过以下方法Node.js 设置DB数据后在nodejs中加载模块,node.js,Node.js,我的最终目标是让module.exports包含一些在app init期间加载的DB值 我试过以下方法 module.exports = (async function() { const cities = await internalUsage.aggregate(citiesPipeline); console.log("HandleCities - Cities loaded") return cities[0].cities; })(); 但这给了我一个承诺 你知道
module.exports = (async function() {
const cities = await internalUsage.aggregate(citiesPipeline);
console.log("HandleCities - Cities loaded")
return cities[0].cities;
})();
但这给了我一个承诺
你知道怎么做吗
**更新**
现在我正在使用globals,如果有人有办法将其保存在模块中,我很乐意听到遗憾的是,仅使用
模块.exports是不可能的。由于函数是async
的,所以在使用vanilla NodeJS模块时,您可以得到的最好的东西是承诺
如果您可以等待
,这就没那么糟糕了module.exports
像工厂一样工作,无论您需要它多少次,都只会生成一个承诺
const citiesPromise = require('./XXXXX_XXXXX');
(async function(){
const cities = await citiesPromise();
...
});
另一种解决方案是使用依赖项注入(DI)和异步工厂支持来抽象NodeJS模块。这将允许您导出一个承诺
,并获得其作为注入的价值
并非所有NodeJSDI都为async
值提供这种抽象,因此在选择DI库时要小心
您可以检查,尽管它鼓励使用TypeScript,但它也有ES6示例