javascript - 为什么 Postman 返回带有错误的 HTML 而不是数据?
问题描述
我有以下 index.js 代码:
const express = require('express');
require('./db/mongoose');
const User = require('./models/user');
const Task = require('./models/task');
const app = express();
const port = process.env.PORT || 3000;
app.use(express.json());
app.post('/users', (req, res) =>{
const user = new User(req.body);
user.save().then(() => {
res.status(201).send(user);
}).catch((e) => {
res.status(400).send(e);
});
});
app.post('/tasks', (req, res) => {
const task = new Task(req.body);
task.save().then(() => {
res.status(201).send(task);
}).catch((e) => {
res.status(400).send(e);
});
});
app.get('/users', (req, res) => {
User.find({}).then((users) => {
res.send(users);
}).catch((e) => {
res.status(500).send();
});
});
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) => {
res.status(500).send();
});
});
app.get('/tasks', (req, res) => {
Task.find({}).then((tasks) => {
res.send(tasks);
}).catch((e) => {
res.status(500).send();
});
});
app.get('tasks/:id', (req, res) => {
const _id = req.params.id;
Task.findById(_id).then((task) => {
if(!task){
return res.status(404).send();
}
res.send(task);
}).catch((e) => {
res.status(500).send();
});
})
app.listen(port, () => {
console.log('Server is on port ' + port);
});
它返回我在这里设置的 404 错误:
Task.findById(_id).then((task) => {
if(!task){
return res.status(404).send();
}
res.send(task);
}).catch((e) => {
res.status(500).send();
});
该 ID 直接从 Robo 3T 复制,但未显示。
来自 Robo 3T 的 ID:
ObjectId("5f22b25820e420212af69875")
所以,我正在寻找:5f22b25820e420212af69875
通过输入:localhost:3000/tasks/5f22b25820e420212af69875
有人对我在这里做错了什么有任何建议吗?我曾多次尝试重写代码,但无法找到解决方案。
如果我的问题措辞不当,我深表歉意,我是新手。请不要犹豫,要求任何有助于澄清我的问题的东西。为你腾出时间。
解决方案
能够通过在我的路线前面添加一个“/”来修复它:
app.get('/tasks/:id', (req, res) => {
const _id = req.params.id;
Task.findById(_id).then((task) => {
if(!task){
return res.status(404).send();
}
res.send(task);
}).catch((e) => {
res.status(500).send();
});
})
推荐阅读
- html - 另存为空白 html 页面而不是内容
- c - 如何从终端中的其他目录编译 C 代码?
- c - 我的数组的第一个字符没有被打印出来
- python - Python:字符串无法识别到一定数量的两位数字
- sql - 创建仅存储默认数据的表的替代方法?
- stm32 - STM32L100C 上的 ADC
- java - 第一个参数类型错误。找到:'com.example.sunshine.FetchData',需要:'android.content.Context'
- flutter - 展开 Stack 小部件内的小部件
- java - Java 可选:映射到子类或超类
- libgdx - 在 libGDX 中的加速度计和 touchDown 之间切换