所以我有一个非常大的对象,我用它来控制 nodejs 应用程序中的东西。有时我将此对象存储在数据库 [mysql] 中,因此如果进程崩溃或重新启动并且某些内容已更改,则将保存更改。很简单。
对象是这样的:http ://snippi.com/s/z5nq0v5
它被定义为 global.config。
所以要存储,我使用我的保存功能:
client.query('SELECT data FROM settings WHERE (id = \''+ config.room +'\')',
function(a, b, c) {
if (!b[0]) {
client.query('INSERT INTO settings (id, data) VALUES (?, ?)', [config.room, JSON.stringify(config)],
function (a) { if (a) throw a;Log("Saved settings"); }
);
} else {
client.query('UPDATE settings SET data="?" WHERE id="'+config.room+'"',
[JSON.stringify(config)],
function (a) { if (a) throw a;Log("Saved settings"); }
);
}
}
);
这似乎有效。但是,当我在更改某些内容后尝试加载它并保存时,出现错误。这是加载代码:
client.query('SELECT data FROM settings WHERE (id = \''+ config.room +'\')',
function(a, b, c) {
console.log(b.length);
if (a) return console.log(a);
if (!b[0]) return db.save("settings");
console.log(b[0].data);
config = JSON.parse(b[0].data);
Log("Loaded Settings");
}
);
如您所见,我真正要做的只是调用我之前字符串化的对象的 JSON.parse()。但是我遇到了一个错误。错误是
undefined:1
3Th0seB310W","ui
^
SyntaxError: Unexpected token '
但是在它所谈论的区域中没有'。如果你指的是那里的物体。
这些是 console.log(b[0].data) 的结果:http://snippi.com/s/tknlgyo
任何帮助将不胜感激,如果需要,我会添加更多信息。注意:auth 码明显变了,只不过是像下面的 uid 一样的 hex 值,只是更长了。