我有以下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
有人对我在这里做错什么有任何建议吗?我已尝试多次重写代码,但无法解决。
如果我的问题措辞不好,我很抱歉,我很新。请不要犹豫,要求提供任何有助于澄清我的问题的信息。为您的时间加油吧。
答案 0 :(得分:0)
能够通过在路线的开头添加“ /”来解决该问题:
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();
});
})