Как я могу написать в JSON без перезаписи всего файла, а вместо этого обновить часть?

#javascript #json #merge #discord.js

Вопрос:

Я создаю бота discord economy на javascript. У меня есть JSON, который сохраняет данные каждого пользователя. Используемая система является:

  • Сохраните json в форме объекта в переменной
  • измените объект
  • Перезапишите json новыми данными

Это работает нормально, но если у 2 пользователей открыт файл, и оба они редактируют свою копию json, а затем перезаписывают json, второй пользователь перезапишет данные первого пользователя. Я думал об использовании базы данных, но это слишком большая работа, чтобы все изменить, поэтому я хотел просто сделать что-то, что изменяет только часть правильного пользователя, как я могу это сделать?

Комментарии:

1. Вам нужно а) выполнять все три шага каждый раз, когда что-то меняется б) помещать изменения в очередь, чтобы пользователи не могли случайно изменить что-то одновременно

2. Вам нужно взаимное исключение. Существуют различные алгоритмы для работы с читателем/автором, но самым простым решением была бы очередь для внесения изменений

3. вы можете найти инструменты для разделения/слияния для объекта, чтобы оба изменения пользователя применялись, если они не конфликтуют. вам нужно будет хранить копию объекта в оперативной памяти и сериализовывать все это в файл каждый раз, когда данные изменяются.

4. @CptPiepmatz вам определенно не нужно знать, кто взаимодействует с файлом. Абсолютно излишне отслеживать одновременное использование, которое, без сомнения, приведет к блокировке чего-то

5. Я придумал еще более простое решение. В функции, которая получает json и преобразует в объект js, я также передаю идентификатор пользователя, а затем, когда я обновляю json, я передаю идентификатор пользователя и данные функции сохранения, поэтому изменяется только часть пользователя. А ты как думаешь?