Я пытаюсь работать с методом NodeJs req.params, но в итоге получаю эту ошибку. Сначала см. Код ниже:
var express = require('express');
require('./db/mongoose');
const User = require('./models/users');
const app = express();
const port = process.env.PORT || 3000;
app.use(express.json());
app.get('/users/:id', (req, res) => {
const _id = req.params.id;
User.findById(_id).then((user) => {
if (!user) {
return res.status(404).send();
}
res.send(user);
}).catch((e) => {
console.log(e);
res.status(500).send();
});
});
После создания запроса в приложении Postman, когда я пытаюсь выполнить запрос, скажем, http://localhost/users/ [какое-то случайное число], он дает мне ошибка «Переданный аргумент должен быть ...», и почтальон выдает мне ошибку 500, где должен выдавать мне 404.
Во-вторых, когда я ввожу идентификатор, который хранится в моей БД, код работает хорошо. Если есть проблема с ObjectId, ошибка должна возникать даже тогда, когда я передаю правильный идентификатор, но это не так.
Node Js version = 8.11.4
MongoDB version = 4.0.5
Mongoose version = 5.9.18
Я был бы признателен, если бы кто-нибудь мог мне здесь помочь.
Обновление: Я заметил (как указал Вишну в ответах ниже), что когда я сохраняю количество символов таким же, как в любом действительном идентификаторе, не имеет значения, если программа не может чтобы найти ID, он будет работать. Если я изменю количество символов, это покажет эту проблему. Итак, я считаю, что сначала мне нужно проверить ObjectId.
Итак, мой вопрос в том, что Mon goose не устраняет эту проблему, автоматически преобразовывая идентификаторы строк в идентификаторы объектов?