所以我当时正在用邮递员测试我的后端,不知道目前到底发生了什么。我得到了文件users.js
,在其中定义了一些路线。我通过以下方式将该文件导入到我的app.js
中:
// Bring in the Users route const users = require('./routes/api/users'); app.use('/api/users', users);
因此
users.js
中的所有api请求实际上都将进入/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
如果我ONLY
将端点更改为类似/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" }
有人知道发生了什么吗?我不明白为什么这行不通...
EDIT:
] >>好,所以我知道了,但是我仍然不知道为什么它在方案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') })
所以我当时正在用邮递员测试我的后端,不知道目前到底发生了什么。我有一个文件users.js,其中定义了一些路由。我使用以下命令将该文件导入到我的app.js中:// ...
:id
是变量。首先声明router.get('/:id', (req, res)
时,将永远不会执行test
方法。
我得到了一个文件users.js,在其中定义了一些路由。