我已经构建了我的第一个Node应用程序,其中我需要使用5-10个全局变量。问题是我希望能够在不重新启动服务器的情况下更改这些值。
所以我设置了一个间隔,并从(JSON?)文件或通过几个查询更新这些文件到数据库。
现在我的选择是什么?应用程序中都使用了mysql和读取文件模块。
基于安全性不是最好将json文件放在公共文件夹后面并从中读取吗?虽然没有sql注入是可能的,但我认为DB也应该非常安全。
你们觉得怎么样?仍然是Node JS的新手。
由于
答案 0 :(得分:2)
使用yamljs
,开销就是您需要安装它。从您的问题来看,您的应用程序中似乎已经使用了大量第三方模块。
为什么不使用属于node.js本身的东西?
使用fs
模块。
示例:
var fs = require('fs');
var obj;
fs.readFile('myData.json', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
});
文档:https://nodejs.org/api/fs.html#fs_fs_readfile_file_options_callback
答案 1 :(得分:1)
将配置变量传递到服务器的常用技术是通过YAML文件。通常,在服务器启动时会读取此文件一次,但您可以定期查询文件以查看上次更新的时间以及文件是否已更改,更新当前正在使用的配置变量。
fs.stat(path, [callback])
然后你可以使用fs.stat的mtime属性定期检查文件的最后修改时间
// Initialize watcher.
var watcher = chokidar.watch('myfile.yml', {
ignored: /[\/\\]\./,
persistent: true
});
// Add event listeners.
watcher.on('change', function(path) {
// Update config
})
如果您发现上次修改时间已更改,则可以重新读取YAML文件并使用新值更新配置。 (您可能希望进行健全性检查以确保文件没有损坏等。)
如果您不想自己编写文件观看逻辑,我建议您查看chokidar
{{1}}