Итак, я тестировал свой бэкэнд с почтальоном и понятия не имею, что, черт возьми, происходит в данный момент. Я получил файл users.js
, где я определяю некоторые из моих маршрутов. Я импортирую этот файл в мой app.js
с помощью:
// Bring in the Users route
const users = require('./routes/api/users');
app.use('/api/users', users);
Так что все запросы API в users.js
на самом деле собираются на /api/users/......
Я определил простой маршрут для тестирования это из.
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('hello world')
})
module.exports = router;
Поэтому, если я отправлю запрос с почтальоном по адресу: http://localhost:5000/api/users/
, я получу ответ: hello world
Если я ТОЛЬКО изменим конечную точку на что-то вроде /test
, я получаю сообщение об ошибке. Другими словами, если я изменю маршрут на:
const express = require('express');
const router = express.Router();
router.get('/test', (req, res) => {
res.send('hello world')
})
module.exports = router;
и снова отправлю запрос с почтальоном на http://localhost:5000/api/users/test
, я получу следующее сообщение об ошибке:
{
"stringValue": "\"test\"",
"kind": "ObjectId",
"value": "test",
"path": "_id",
"reason": {},
"message": "Cast to ObjectId failed for value \"test\" at path \"_id\" for model \"Project\"",
"name": "CastError"
}
кто-нибудь имеет представление, что происходит? Я не понимаю, почему это не работает ...
РЕДАКТИРОВАТЬ:
Хорошо, так что я понял это, но я все еще не понимаю Не знаю, почему это работает в сценарии 1 и не работает в сценарии 2:
Это работает:
router.get('/test', (req, res) => {
res.send('hello world')
})
//load project
router.get('/:id', (req, res) => {
Project.findById(req.params.id)
.then(projectFound => {
res.status(200).send(projectFound)
})
.catch(err => {
res.status(500).send(err)
})
})
Это не работа:
//load project
router.get('/:id', (req, res) => {
Project.findById(req.params.id)
.then(projectFound => {
res.status(200).send(projectFound)
})
.catch(err => {
res.status(500).send(err)
})
})
router.get('/test', (req, res) => {
res.send('hello world')
})