node.js在模块之间共享动态变量

时间:2017-07-04 19:45:55

标签: node.js express

我有一个名为 number_of_clusters 的变量,必须定期更新。还必须与其他模块共享 number_of_clusters 才能阅读它。我怎样才能确保阅读模块每次访问时都会读取该变量的新副本? 我不想使用数据库来共享这个变量,所以我想我可以通过process.env分享它。

process.env.number_of_clusters = 1;

这是一个好习惯吗?

4 个答案:

答案 0 :(得分:0)

看起来像是在搜索全局变量:

global. number_of_clusters = 1

然而,使用数据库或文件可能是一个更好的解决方案。

答案 1 :(得分:0)

尝试在文件中读/写?

var fs = require('fs');
fs.writeFile("/path/to/file", "whatever", function(err) {
    console.log("The file was saved!");
}); 
fs.readFile('/path/to/file', 'utf8', function(err, contents) {
    console.log(contents); // -> whatever
});

答案 2 :(得分:0)

如果其他模块作为同一Nodejs进程的一部分运行, 您只需将getter导出到其他模块即可获得number_of_clusters的最新值。 像:

function get_number_of_clusters() {
  return number_of_clusters;
}

module.exports = { get_number_of_clusters };

现在在其他模块中,您需要导入此模块并调用此方法,如:

var getter = require('path/to/above/module').get_number_of_clusters;
var number_of_clusters = getter();

答案 3 :(得分:-1)

您可以使用socket.io将变量存储在服务器上,并将其发送到所有页面。