使用 Express 和 Mongo DB 提出请求

Put request with Express and Mongo DB

我正在构建一个简单的反应列表应用程序,它使用 express 和 mongoDB 来获取所有 CRUD 操作的句柄。到目前为止,我有 GET、POST、DELETE,工作正常,但我似乎无法让 PUT 运行。 当我尝试通过 Insomnia 发出 PUT 请求时,出现以下错误 "Error: Failure when receiving data from the peer"

型号

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const listItemSchema = new Schema({
  itemname: { type: String, required: true, unique: true },
  category: { type: String, required: true, unique: true },
}, {
  timestamps: true,
});

const ListItem = mongoose.model('ListItem', listItemSchema);

module.exports = ListItem;

路线

const router = require('express').Router();
let ListItem = require('../models/list.model');

router.get('/', async (req, res) => {
    try {
        const list = await ListItem.find();
        res.json(list);
    } catch(err) {
        console.error(err.message);
        res.send(400).send('Server Error');
    }
});

router.get('/:id', async (req, res) => {
    try {
        const item = await ListItem.findById(req.params.id);
        res.json(item);
    } catch(err) {
        console.error(err.message);
        res.send(400).send('Server Error');
    }
});

router.post('/addlistitem', async (req, res) => {
    try {
        const { itemname, category } = await req.body;
        const newListItem = new ListItem({
            itemname,
            category
          });

          await newListItem.save()
          res.json('ListItem added!')    
    } catch(err) {  
        console.error(err.message);
        res.status(500).json('Server Error');
   }
});


router.delete('/:id', async (req, res) => {
    try {
         await ListItem.findByIdAndDelete(req.params.id);
        res.json(' Item deleted.');

        } catch(err) {
          res.status(400).json('Error: ' + err);
     }
  });

  router.put('/:id', async (req, res) => {
    try {
         await ListItem.findByIdAndUpdate(req.params.id, {
            itemname: req.body.itemname,
            category: req.body.category
        });

    } catch(err) {
        console.error(err.message);
        res.send(400).send('Server Error');
    }
});


module.exports = router;

您忘记在您的放置路由中发送响应

  router.put('/:id', async (req, res) => {
    try {
      await ListItem.findByIdAndUpdate(req.params.id, {
          itemname: req.body.itemname,
          category: req.body.category
      });
      // Send response in here
      res.send('Item Updated!');

    } catch(err) {
        console.error(err.message);
        res.send(400).send('Server Error');
    }
});