У меня есть функция, которая записывает массив объектов в файл.
save() {
const getCircularReplacer = () => {
const seen = new WeakSet();
return (key, value) => {
if (typeof value === 'object' && value !== null) {
if (seen.has(value)) {
return;
}
seen.add(value);
}
return value;
};
};
const newState = JSON.stringify(this.tasks, getCircularReplacer());
const newStateHash = hash.h32(newState, 0xABCD).toString(16);
if (newStateHash !== this._previousStateHash) {
fs.writeFileSync('./.persistance.json', newState);
this._previousStateHash = newStateHash;
}
}
Обратный вызов выполняется из другой функции с помощью setInterval()
.
setInterval(() => {
this.save();
}, 1000);
Идея, лежащая в основеэто происходит в случае сбоя процесса узла после перезапуска, он считывает данные из файла и выполняет некоторые действия на основе этих данных. Функция работает нормально и сохраняет данные в файл, если я завершу процесс узла, файл сохранит данные, но как только я перезапущу программу, содержимое файла исчезнет.
Я предполагаю, что это может быть из-зарежим по умолчанию writeFileSync()
, как я могу предотвратить поведение, при котором содержимое файла стирается при перезапуске?
Нужно ли добавлять задержку для вызова функции или использовать append вместо write?