Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我在邮递员未完成的情况下收到PUT请求?_Javascript_Node.js_Express_Put_Express Router - Fatal编程技术网

Javascript 为什么我在邮递员未完成的情况下收到PUT请求?

Javascript 为什么我在邮递员未完成的情况下收到PUT请求?,javascript,node.js,express,put,express-router,Javascript,Node.js,Express,Put,Express Router,在开始我的申请之前,我已经与邮递员创建了一些请求,但这些请求的PUT并没有全部发送给我 这是我在ExpressJS中对服务器的配置: const express = require('express'); const morgan = require('morgan'); const helmet = require('helmet'); const mongoose = require('mongoose'); const app = express(); // Settings app.

在开始我的申请之前,我已经与邮递员创建了一些请求,但这些请求的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'));
});
它对我正常工作,这是我正在使用的路由器,位于routes文件夹的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;
在控制台中似乎没有给我任何错误。我用普通邮递员发出请求,它返回控制台的日志。甚至服务器也会回答json和所有问题。但是数据库中的数据没有改变。GET或POST不会出现这种情况,相反,一切都进展顺利

在这里,我告诉你我是如何向邮递员提出请求的。首先,我将向您展示数据库中已有的数据,以及通常通过浏览器完成的get请求:

准备好了,当我发出PUT请求时,这是我在POSTMAN中的配置:

这是一个json类型的内容类型,因为这就是我要处理的,然后是正文:

这是控制台中的答案:


您认为它可能是什么?

我看到req.params的console.log.\u id未定义:更改

Task.findByIdAndUpdate(req.params.id,req.body)将_id更改为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');

})