#mongodb #mongoose
#mongodb #mongoose
Вопрос:
Я создаю пользователя с помощью Mongoose, и я хочу использовать свой собственный _id
. Я думал, что вы можете преобразовать любую строку в an ObjectId
с помощью следующего кода: mongoose.Types.ObjectId('4fhTTRkUYNPBUSiYIhz8YHZ9wQ02')
. Это то, что предложили несколько других ответов на переполнение стека. Однако, когда я использую этот код в Node, я получаю следующую ошибку: Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
.
Что я делаю не так?
router.post("/create_user", (req, res) => {
const id = req.body.id;
console.log("/create_user id : ", id); // <-- logging successfully '4fhTTRkUYNPBUSiYIhz8YHZ9wQ02'
User.create({
_id: mongoose.Types.ObjectId(id), // <-- generating error
name: "Joe"
})
.then((u) => {
return res.json({ user: u });
})
.catch((err) => {
console.log("/create_user error : ", err);
return res.json({ error: err });
});
});
Ответ №1:
Я думал, что вы можете преобразовать любую строку в ObjectId
Это не так, только некоторые строки являются допустимыми идентификаторами объектов.
Комментарии:
1. Можете ли вы уточнить?
2. Я предлагаю вам обратиться к документации.