#javascript #json #merge #discord.js
Вопрос:
Я создаю бота discord economy на javascript. У меня есть JSON, который сохраняет данные каждого пользователя. Используемая система является:
- Сохраните json в форме объекта в переменной
- измените объект
- Перезапишите json новыми данными
Это работает нормально, но если у 2 пользователей открыт файл, и оба они редактируют свою копию json, а затем перезаписывают json, второй пользователь перезапишет данные первого пользователя. Я думал об использовании базы данных, но это слишком большая работа, чтобы все изменить, поэтому я хотел просто сделать что-то, что изменяет только часть правильного пользователя, как я могу это сделать?
Комментарии:
1. Вам нужно а) выполнять все три шага каждый раз, когда что-то меняется б) помещать изменения в очередь, чтобы пользователи не могли случайно изменить что-то одновременно
2. Вам нужно взаимное исключение. Существуют различные алгоритмы для работы с читателем/автором, но самым простым решением была бы очередь для внесения изменений
3. вы можете найти инструменты для разделения/слияния для объекта, чтобы оба изменения пользователя применялись, если они не конфликтуют. вам нужно будет хранить копию объекта в оперативной памяти и сериализовывать все это в файл каждый раз, когда данные изменяются.
4. @CptPiepmatz вам определенно не нужно знать, кто взаимодействует с файлом. Абсолютно излишне отслеживать одновременное использование, которое, без сомнения, приведет к блокировке чего-то
5. Я придумал еще более простое решение. В функции, которая получает json и преобразует в объект js, я также передаю идентификатор пользователя, а затем, когда я обновляю json, я передаю идентификатор пользователя и данные функции сохранения, поэтому изменяется только часть пользователя. А ты как думаешь?