Файл Json случайно повреждается из скрипта узла - PullRequest
0 голосов
/ 11 марта 2019

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

{
    "discordId": "296062947329966080",
    "dateAdded": "2019-03-11T02:34:01.303Z",
    "queueStatus": "notQueuing",
    "opponent": null
},

Когда один человек выстраивается в очередь с помощью команды, он устанавливает «queueStatus» в «Очередь», а когда другой человек находится в очереди, он устанавливает противника этому человеку и сообщает обоим пользователям, что они являются противниками. Проблема в том, что случайно файл JSON будет поврежден при изменении, и что-то подобное произойдет в нижней части:

            "dateAdded": "2019-03-11T02:34:01.303Z",
            "queueStatus": "notQueuing",
            "opponent": null
        }
    ]
}537"
        }
    ]
}

Моя единственная идея состоит в том, что это происходит потому, что два человека, делающие это одновременно, одновременно записывают в файл и повреждают его, и fs.writeFileSync исправит это, но если я использую fs.writeFileSync, то все остальные бот disord останавливается и перестает работать, пока не закончит писать, что не очень практичное решение.

1 Ответ

1 голос
/ 11 марта 2019

Данные, хранящиеся в файле JSON, должны быть перенесены в MongoDB или другую БД. Операции CRUD над одним статическим файлом из нескольких заданий / источников не являются масштабируемым решением. Перенос этого хранилища данных в базу данных разрешит эти паузы и остановки.

Оформить заказ на Youtube от freecodecamp.org


Однако, если файл JSON требуется или все еще предпочтителен, я бы рекомендовал использовать EventEmitter для создания одной очереди блокировки для чтения и записи.

...