つまり、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
何か助けていただければ幸いです。必要に応じてさらに情報を追加します。注:認証コードは明らかに変更されていますが、その下のuidのような16進値であり、さらに長くなっています。