#node.js #mongodb #mongoose #mean-stack
Вопрос:
Я создаю приложение, используя Node.js и МонгоДБ. Приложение генерирует уникальные идентификаторы для различных запросов, которые оно получает. Приложение проверяет уникальность идентификатора, запрашивая в базе данных этот конкретный идентификатор. Если запись найдена, приложение генерирует другой идентификатор и повторяет процесс, если нет, приложение использует исходный идентификатор.
Проблема может возникнуть, если в приложение будут отправлены одновременные запросы. Два запроса могут получить один и тот же идентификатор и одновременно проверить наличие дубликатов. Оба они видят, что идентификатор новый, и продолжают его использовать. Я новичок в Node.js, MongoDB, Мангуст и программирование в целом. Как я мог бы решить эту проблему?
ИЗМЕНИТЬ: Идентификаторы короткие и используют ограниченный алфавит. Использование ObjectId Монго-это не вариант, и проверка на наличие дубликатов-это не то, что я могу просто пропустить.
Комментарии:
1. Просто генерировать идентификаторы GUID?
2. Почему бы не использовать сгенерированный MongoDB
ObjectID
?3. Я бы не стал так сильно беспокоиться. Предположим, вы используете uuid v4, который создает случайные значения, вероятность того, что значение повторится, составляет около 2^124. Это невероятно низко. Теперь проверка вашей базы данных на наличие значения прекрасна и даже снижает эту вероятность, но наличие одного и того же номера в одно и то же время практически невозможно. Если вы не совершаете никаких важных банковских операций, это кажется мне незначительным.
4. Идентификаторы также возвращаются пользователю. Они очень короткие и используют ограниченный алфавит. Я должен проверить наличие дубликатов, так как вероятность столкновения довольно высока.