Api вызывает MEAN4 +

1

Так что я работаю в среднем стеке приложения, но я просто не получаю права на api. Единственное, что работает, это GET! Мой пост и пост, похоже, не работают, я думаю, что я получил свой синтаксис неправильно, но я просто не нашел подходящего в Интернете.

//GET 
router.get('/employees', (req, res) => {
    connection((db) => {
        db.collection('employees')        
            .find()
            .toArray()
            .then((employees) => {
                response.data = employees;
                res.json(response);
            })
            .catch((err) => {
                sendError(err, res);
            });
    });
});

// POST

router.post('/employees', (req, res) => {

    const employees = { name: req.body.name, age: req.body.age , wage: req.body.wage , place: req.body.place };
    db.collection('employees').insert(employees, (err, result) => {
      if (err) { 
        res.send({ 'error': 'An error has occurred' }); 
      } else {
        res.send(result.ops[0]);
      }
    });

  });

//PUT

  router.put('/employees/:id', (req, res) => {
    const id = req.params.id;
    const details = { '_id': new ObjectID(id) };
    const employee = { name: req.body.name, age: req.body.age , wage: req.body.wage , place: req.body.place };
    db.collection('employees').update(details, employee, (err, result) => {
      if (err) {
          res.send({'error':'An error has occurred'});
      } else {
          res.send(employee);
      } 
    });
  });
  • 1
    Можете ли вы показать тело запроса, которое вы отправляете, с помощью методов put и post, а также какой ответ вы получите, когда попробуете эти два метода?
  • 0
    также выглядит так, как будто вы не определили db в post и put, если в вашем коде отсутствует импорт в верхней части файла, который мы не видим
Показать ещё 7 комментариев
Теги:
angular
mean-stack
express

1 ответ

0
Лучший ответ

ваши методы PUT и POST не имеют подключений к базе данных, поэтому db.collection не определено в обоих

router.post('/employees', (req, res) => {

            const employees = { name: req.body.name, age: req.body.age , wage: req.body.wage , place: req.body.place };
    connection((db) => {
            db.collection('employees').insert(employees, (err, result) => {
              if (err) { 
                res.send({ 'error': 'An error has occurred' }); 
              } else {
                res.send(result.ops[0]);
              }
            });
        });
          });

        //PUT

          router.put('/employees/:id', (req, res) => {
            const id = req.params.id;
            const details = { '_id': new ObjectID(id) };
            const employee = { name: req.body.name, age: req.body.age , wage: req.body.wage , place: req.body.place };
            connection((db) => {
            db.collection('employees').update(details, employee, (err, result) => {
              if (err) {
                  res.send({'error':'An error has occurred'});
              } else {
                  res.send(employee);
              } 
            });
    });
          });
  • 0
    Да, спасибо, я забыл перезапустить узел - «Спасибо, что нашли время !! Это фиксированная :)
  • 0
    нет проблем, рад, что смог помочь. Пожалуйста, просто отметьте решенный вопрос, спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню