Поставить заявку с Express и пн go БД - PullRequest
0 голосов
/ 03 марта 2020

Я создаю простое приложение со списком реагирования, которое использует express и mongoDB для обработки всех операций CRUD. Пока у меня есть GET, POST, DELETE, все работает отлично, но я не могу заставить работать PUT. Когда я пытаюсь выполнить запрос PUT через Insomnia, я получаю следующую ошибку «Ошибка: ошибка при получении данных от однорангового узла»

МОДЕЛИ

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;

1 Ответ

1 голос
/ 03 марта 2020

Вы забыли отправить ответ на поставленный маршрут

  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');
    }
});
...