节点设置文件vs mysql存储

时间:2015-11-29 22:12:33

标签: mysql json node.js

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

所以我设置了一个间隔,并从(JSON?)文件或通过几个查询更新这些文件到数据库。

现在我的选择是什么?应用程序中都使用了mysql和读取文件模块。

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

你们觉得怎么样?仍然是Node JS的新手。

由于

2 个答案:

答案 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文件。通常,在服务器启动时会读取此文件一次,但您可以定期查询文件以查看上次更新的时间以及文件是否已更改,更新当前正在使用的配置变量。

yamljs

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}}