Преобразование UUIDv4 в ObjectId — MongoDB

#node.js #mongodb #mongoose

#node.js #mongodb #мангуст

Вопрос:

В данный момент я создаю уникальные идентификаторы UUID и сохраняю их в виде строки в MongoDB. Есть ли способ сохранить эти UUID в качестве объекта в MongoDB.

Проблема в том, что User.findOne на основе _id не работает, потому что UUID-это строка, а не ObjectId

Ответ №1:

вам не нужно создавать идентификаторы uuid сущностей, мангуста, сделайте это за вас, например, если вы используете метод create() без передачи _id, он сгенерирует его.

конечно, лучше сгенерировать его вручную.

и это по умолчанию.

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

1. Да, я знаю, что мангуст автоматически генерирует _id, но я хочу иметь UUID, который выглядит так: c4ea5454-af54-4d9a-afa7-705b46dfe8ed. Функция генерирует идентификатор такого типа, но сохраняет его в виде строки. Я хочу преобразовать эту строку в идентификатор объекта

2. да, измените тип схемы на ObjectId, а при сохранении используйте Type.ObjectId(YOUR_UUID4), но я думаю, что это приведет к сбою, потому что это не формат rigth, однако вы можете попробовать сохранить его как строку и запросить не с помощью findById, а findOne

3. К сожалению, это не сработало. Я все еще получаю ошибку преобразования между строкой и объектом.