содержимое файла очищается при перезагрузке узла - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть функция, которая записывает массив объектов в файл.

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?

...