我试图将包含NodeJS中类的对象数组的变量保存到文件中,以便可以从那里重用它,而不必像这样重新获取它
const chatAPI = require("some_module");
const client = new chatAPI.Client("Auth-Key");
var channels = client.channels();
//Now channels is something I would like to use later on
//Say
channels.forEach(channel => {channel.send("Hello")});
有什么方法可以将Channels变量保存到文件中,以便以后可以再次将其加载到程序存储器中并按原样使用它,而不必创建新的客户端并提取数据。
要进行详细说明,就像我让该程序在阻塞循环下运行一段时间,然后再使用该变量一样,在这种情况下,我将不必重新解析或重建数据。
答案 0 :(得分:5)
有几种方法可以做到这一点,例如
let a = {foo: "bar" };
console.log("a", a);
fs.writeFileSync("./saved_data.json", JSON.stringify(a));
let b = require("./saved_data.json");
console.log("b", b);
您还可以:
let b = JSON.parse(fs.readFileSync("./saved_data.json"));
console.log("b", b);
现在您只能保存数据而不是方法!
如果要保留 object ,我将使用全局变量来存储它:
let globalObject = null;
someMethod.get((obj) => {
// Save this for later use
globalObject = obj;
})
// Later on
if (globalObject) {
globalObject.doStuff();
}
答案 1 :(得分:0)
我在项目中使用了这两个函数,
它将数据存储在操作系统的默认AppData文件夹中:
const {
app
} = remote
const fs = require('fs')
function get_option(file, callback) {
fs.readFile(
app.getPath('userData') + '\\user_data' + '\\' + file, 'utf8',
function (err, data) {
callback(err, data)
}
)
}
function set_option(file, data) {
if (data) {
fs.writeFileSync(
app.getPath('userData') + '\\user_data' + '\\' + file, data
)
} else {
fs.unlink(
app.getPath('userData') + '\\user_data' + '\\' + file,
function (err) {}
)
}
}
然后您可以执行以下操作:
set_option(
'data.json',
JSON.stringify(jsonObject)
)
get_option('data.json', function (err, data) {
if (!err && data) {
let jsonObject = JSON.parse(data)
// Do something ..
}
})
答案 2 :(得分:-1)
根据我的经验,对于一个小型项目,最好的选择是使用SQLite数据库,该数据库可以在没有任何数据库引擎的情况下使用,并且整个数据库本身只是一个易于移动的文件。这也支持(通常)标准的sql查询来插入,更新和选择。 只需在node.js中执行一个“ require”操作,即可在php,android和几乎任何其他平台上使用相同功能,而无需花费太多精力。
这是示例插入并选择
store.commitChanges()