私はfsで問題が発生しました。 SQLユニバースでは、失われた更新と呼ぶでしょう。node.js更新が失われたJSONファイル
背景ストーリー:
私はJSONファイルにユーザーによって提供されるいくつかのデータを格納する必要があり、小さなアプリケーションを、得た:
[
{
"givenname": "Joe",
"surname": "Doe",
"dob": "1990-04-01"
},
{
"givenname": "Tim",
"surname": "Cake",
"dob": "2000-01-01"
}
]
そして、私は、ファイル更新するために、いくつかのJSを得た:
を// sync
var data = JSON.parse(fs.readFileSync(data_path, 'utf8'));
data.push(user);
var str = JSON.stringify(data);
setTimeout(function() {
fs.writeFileSync(data_path, str);
res.send({'status': 'success'});
}, 5000);
// same story but async
fs.readFile(data_path, 'utf8', function (err, _data) {
if (err) throw err;
var data = JSON.parse(_data);
data.push(user);
setTimeout(function() {
fs.writeFile(data_path, JSON.stringify(data), function (err) {
if (err) {
console.log(err);
res.send({'status': 'error'})
}
res.send({'status': 'success'})
})
}, 5000);
});
SetTimeout(..., 5000)
を挿入して、アプリケーションのテストにもう少し時間をかけました。
私はそれは、たとえば{"givenname": "g02", "surname": "s02", "dob": "2016-02-02"}
のために、最初のレコードの同期または非同期、私はアプリにいくつかのデータを投稿した場合、たとえば{"givenname": "g01", "surname": "s01", "dob": "2016-01-01"}
用と5秒以内に他のいくつかのデータをポストしなければどんなに(G01を、S01)となります失われた
私が知っていることは、ファイルを読み書きする時間がはるかに短くなることは分かっていますが、明らかにそれが存在し、データが破損する可能性があります。
だから私の質問は次のとおりです。
データの損失を回避する可能性はありますか?
私は何が起こっているのか知っていますが、同期が完璧に機能することはわかりませんでした。どうも。 – Alex