为什么我收到 POSTMAN 未完成的 PUT 请求?
Why do I get the PUT request with POSTMAN not done?
在开始我的应用程序路由之前,我已经使用 POSTMAN 创建了一些请求,其中的 PUT 没有完整地发送给我。
这是我在 ExpressJS 中的服务器配置:
const express = require('express');
const morgan = require('morgan');
const helmet = require('helmet');
const mongoose = require('mongoose');
const app = express();
// Settings
app.set('port', process.env.PORT || 3000);
mongoose.connect('mongodb://localhost/mevn-curso', {
useNewUrlParser: true,
useFindAndModify: false,
useCreateIndex: true
})
.then(db => console.log('DB is connected'))
.catch(err => console.log(err));
mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
// Middlewares
app.use(morgan('dev'));
app.use(express.json());
app.use(helmet());
// Routes
app.use('/tasks/', require('./routes/tasks'));
// Static files
app.use(express.static(__dirname + '/public'))
app.listen(app.get('port'), ()=> {
console.log('Server on port', app.get('port'));
});
它对我来说正常工作,这是我正在使用的路由器,它在路由文件夹的 tasks.js 文件中:
const express = require('express');
const router = express.Router();
const Task = require('../models/Task');
router.get('/', async (req,res)=> {
const tasks = await Task.find();
res.json(tasks);
})
router.post('/', async (req,res) => {
const task = new Task(req.body);
await task.save();
res.json({
status: "Task Saved"
})
})
router.put('/:id', async (req,res)=> {
console.log(req.params._id);
console.log(req.body);
await Task.findByIdAndUpdate(req.params._id, req.body)
res.json('recivied');
console.log('Listo')
})
module.exports = router;
在控制台中似乎没有给我任何错误。我用正常的 POSTMAN 发出请求,它 returns 控制台的日志。甚至服务器也会回答 json 和所有内容。但是数据库中的数据并没有改变。使用 GET 或 POST 不会发生这种情况,相反,一切顺利。
在这里我告诉你我是如何用 POSTMAN 发出请求的。首先,我将向您展示我已经在数据库中的数据,以及通常使用浏览器完成的获取请求:
准备好,当我发出 PUT 请求时,这是我在 POSTMAN:
中的配置
这是一个 json 类型的内容类型,因为这就是我要处理的内容,然后是正文:
这是控制台中的答案:
你认为它可能是什么?
我看到 req.params._id 的 console.log 未定义:更改
Task.findByIdAndUpdate(req.params.id, req.body) changed _id to id
router.put('/:id', async (req,res)=> {
console.log(req.params.id);
console.log(req.body);
await Task.findByIdAndUpdate(req.params.id, req.body)
res.json('recieved');
})
在开始我的应用程序路由之前,我已经使用 POSTMAN 创建了一些请求,其中的 PUT 没有完整地发送给我。
这是我在 ExpressJS 中的服务器配置:
const express = require('express');
const morgan = require('morgan');
const helmet = require('helmet');
const mongoose = require('mongoose');
const app = express();
// Settings
app.set('port', process.env.PORT || 3000);
mongoose.connect('mongodb://localhost/mevn-curso', {
useNewUrlParser: true,
useFindAndModify: false,
useCreateIndex: true
})
.then(db => console.log('DB is connected'))
.catch(err => console.log(err));
mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
// Middlewares
app.use(morgan('dev'));
app.use(express.json());
app.use(helmet());
// Routes
app.use('/tasks/', require('./routes/tasks'));
// Static files
app.use(express.static(__dirname + '/public'))
app.listen(app.get('port'), ()=> {
console.log('Server on port', app.get('port'));
});
它对我来说正常工作,这是我正在使用的路由器,它在路由文件夹的 tasks.js 文件中:
const express = require('express');
const router = express.Router();
const Task = require('../models/Task');
router.get('/', async (req,res)=> {
const tasks = await Task.find();
res.json(tasks);
})
router.post('/', async (req,res) => {
const task = new Task(req.body);
await task.save();
res.json({
status: "Task Saved"
})
})
router.put('/:id', async (req,res)=> {
console.log(req.params._id);
console.log(req.body);
await Task.findByIdAndUpdate(req.params._id, req.body)
res.json('recivied');
console.log('Listo')
})
module.exports = router;
在控制台中似乎没有给我任何错误。我用正常的 POSTMAN 发出请求,它 returns 控制台的日志。甚至服务器也会回答 json 和所有内容。但是数据库中的数据并没有改变。使用 GET 或 POST 不会发生这种情况,相反,一切顺利。
在这里我告诉你我是如何用 POSTMAN 发出请求的。首先,我将向您展示我已经在数据库中的数据,以及通常使用浏览器完成的获取请求:
准备好,当我发出 PUT 请求时,这是我在 POSTMAN:
中的配置这是一个 json 类型的内容类型,因为这就是我要处理的内容,然后是正文:
这是控制台中的答案:
你认为它可能是什么?
我看到 req.params._id 的 console.log 未定义:更改
Task.findByIdAndUpdate(req.params.id, req.body) changed _id to id
router.put('/:id', async (req,res)=> {
console.log(req.params.id);
console.log(req.body);
await Task.findByIdAndUpdate(req.params.id, req.body)
res.json('recieved');
})