Задать вопрос
@lil_koi
лучший из худших

Почему не работат ObgectID?

У меня есть код, который ищет по _id. Если делать напрямую по id, как из базы 5dd44dafc6f4762b80b8e5ff, то всё норм. Я посмотрел на stackoverflow.com как сделать поиск по id числу, то есть по "1", а не "5dd44dafc6f4762b80b8e5ff".

получилось это

var ObjectId = require('mongoose').Types.ObjectId;

exports.getById = async (req, res) => {
try {
const user = find({_id: ObjectId(req.params.id)});
res.send({ user });
} catch (err) {
res.send({status: 404, message: 'не найдено'})
}
}
но он не работает. Почему?

До этого было

exports.getById = async (req, res) => {
const id = req.params.id;
const user = await User.findById(id).exec(); // Венёт промис, поэтому необходим await. {} - найти все документы
res.send({ user });
}
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
hzzzzl
@hzzzzl
const user = await User.find({_id: ObjectId(req.params.id)});  // вот тут подождать надо
res.send({ user });


я вообще подозреваю, что mongoose сам приведет к нужному типу, и можно просто
await User.findOne({_id: req.params.id})
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IDONTSUDO
@IDONTSUDO
ЧСВ программистов идет в комплекте с первой IDE.
у твоего ID тип данных String, а монго ожидает Object
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы