我正在处理一个MEAN堆栈项目,并试图将一组变量从一个控制器传递到另一个控制器。我目前的做法是导出多个对象为我**artworks.js**
控制器文件:在Node.JS中导出多个对象
module.exports = {
Router: router,
artists: distinctArtistsArray
}
路由器对象是传统的快递路由器,但distinctArtistsArray
是我的MongoDB数据库中的所有艺术家的字符串数组。我有一个异步函数在后台运行,每隔一段时间填充distinctArtistsArray
。然后将这个数组传递给别处写的其他函数,以便在幕后执行一些NLP任务。
我希望另一个控制器也可以访问这些变量,因为我不想通过对艺术家信息进行重复的异步查询来在MongoDB上施加过度的负载。这是我的另一个控制器(complete.js
):
router.get("/", (req, res) => {
var ArtworkSearch = require('../controllers/artworks.js');
console.log(ArtworkSearch.artists)
});
我放在require('../controllers/artworks/js')
回调函数里面,因为我想每个请求达到/complete
终点时刻不断重新导入值。
但是,在我的控制台中,我收到一个空数组([]
),这是我初始化的distinctArtistsArray
到。仅供参考,我已经采用了与此类SO post中所接受的答案相同的确切方法。
如何获取我的艺术家列表complete.js
控制器?
如果'distinctArtistsArray'最初是空的,那么它是如何得到一个值的。您无需重新导入即可查看该房产的最新价值。请记住,模块已被缓存,因此重新导入不会再次运行您的模块。它只是从第一次返回缓存模块。 – jfriend00
谢谢。我不知道模块缓存在Node中! –