节点设置文件与mysql存储

节点设置文件与mysql存储,mysql,json,node.js,Mysql,Json,Node.js,我已经建立了我的第一个节点应用程序,其中我需要使用5-10个全局变量很多。问题是我希望能够在不重新启动服务器的情况下更改这些值 所以我想的是设置一个间隔并从(JSON?)文件或通过对数据库的几个查询来更新这些文件 现在,我的更好选择是什么?应用程序中同时使用mysql和读取文件模块 基于安全性将json文件放在公用文件夹后面并从中读取不是最好的吗?虽然没有sql注入是可能的,但我认为在DB中也应该是相当安全的 你们觉得怎么样??仍然是NodeJS的新手 感谢将配置变量传递给服务器的一种常见技术是

我已经建立了我的第一个节点应用程序,其中我需要使用5-10个全局变量很多。问题是我希望能够在不重新启动服务器的情况下更改这些值

所以我想的是设置一个间隔并从(JSON?)文件或通过对数据库的几个查询来更新这些文件

现在,我的更好选择是什么?应用程序中同时使用mysql和读取文件模块


基于安全性将json文件放在公用文件夹后面并从中读取不是最好的吗?虽然没有sql注入是可能的,但我认为在DB中也应该是相当安全的

你们觉得怎么样??仍然是NodeJS的新手


感谢

将配置变量传递给服务器的一种常见技术是通过YAML文件。通常在服务器启动时读取一次该文件,但您可以定期查询该文件,查看其上次更新的时间,以及该文件是否已更改,并更新当前使用的配置变量

然后,您可以使用的mtime属性定期检查上次修改文件的时间

如果发现上次修改的时间已更改,则可以重新读取YAML文件并使用新值更新配置。(您可能需要进行健全性检查,以确保文件未损坏等。)

如果您不想自己编写文件监视逻辑,我建议您签出


使用
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);
});

文档:

基于安全性的,最好不要使用全局变量吗?正如我提到的,我对Node还是新手,但我确实需要它们,我不想每次我做一些事情时都通过查询DB来获得最大项的值。我的评论不在Node的上下文中。Globals在任何编程语言中都是不好的。我明白了,那么你会建议如何处理上面的“检查”?使用IIFE(立即调用的函数表达式)。和我看到的差不多!!谢谢。在这种情况下,您需要安装第三方的
yamljs
模块。为什么不使用简单的JSON呢?我建议使用
fs
模块,它是node的一部分
fs.stat(path, [callback])
// Initialize watcher.
var watcher = chokidar.watch('myfile.yml', {
  ignored: /[\/\\]\./,
  persistent: true
});

// Add event listeners.
watcher.on('change', function(path) { 
    // Update config
})
var fs = require('fs');
var obj;
fs.readFile('myData.json', 'utf8', function (err, data) {
  if (err) throw err;
  obj = JSON.parse(data);
});