Пытаясь поймать данные из req.body, я получаю пустой объект? - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь поймать данные из Почтальона, но "req.body" выдает пустой объект для меня.Что может быть проблемой с этим?

Я не так хорош в Node.js и Express.

Я прочитал много вопросов о StackOverFlow, но у меня ничего не получалось, ни сеанс, ни что-либо еще.

У меня есть файловое приложение:


/*********
* app.js file
*********/


const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

module.exports = function () {
  let server = express(),
    create,
    start;

  create = (config, db) => {
    // add middleware to parse the json
    server.use(bodyParser.json());
    server.use(bodyParser.urlencoded({
      extended: false
    }));

    let routes = require('../routes');
    // set all the server things
    server.set('env', config.env);
    server.set('port', config.port);
    server.set('hostname', config.hostname);


    //connect the database
    mongoose.connect(
      db.database,
      {
        useNewUrlParser: true,
        useCreateIndex: true
      }
    );

    // Set up routes
    routes.init(server);
  };


  start = () => {
    let hostname = server.get('hostname'),
      port = server.get('port');
    server.listen(port, function () {
      console.log('Express server listening on - http://' + hostname + ':' + port);
    });
  };
  return {
    create: create,
    start: start
  };
};


Здесь ниже, когдаЯ пытаюсь поймать данные, они пустые (не определено)

мой сервис user.js


/********
* user.js file (services/users)
********/


const express = require('express');
const User = require('../../models/user');

const getUsers = async (req, res, next) => {
  try {

    let users = await User.find({});

    if (users.length > 0) {
      return res.status(200).json({
        'message': 'users fetched successfully',
        'data': users
      });
    }

    return res.status(404).json({
      'code': 'BAD_REQUEST_ERROR',
      'description': 'No users found in the system'
    });
  } catch (error) {
    return res.status(500).json({
      'code': 'SERVER_ERROR',
      'description': 'something went wrong, Please try again'
    });
  }
}

const createUser = async (req, res, next) => {

  try {

    const {
      name,
      email
    } = req.body;

    if (name === undefined || name === '') {
      return res.status(422).json({
        'code': 'REQUIRED_FIELD_MISSING',
        'description': 'name is required',
        'field': 'name'
      });
    }

    if (email === undefined || email === '') {
      return res.status(422).json({
        'code': 'REQUIRED_FIELD_MISSING',
        'description': 'email is required',
        'field': 'email'
      });
    }


    let isEmailExists = await User.findOne({
      "email": email
    });

    if (isEmailExists) {
      return res.status(409).json({
        'code': 'ENTITY_ALREADY_EXISTS',
        'description': 'email already exists',
        'field': 'email'
      });
    }

    const temp = {
      name: name,
      email: email
    }

    let newUser = await User.create(temp);

    if (newUser) {
      return res.status(201).json({
        'message': 'user created successfully',
        'data': newUser
      });
    } else {
      throw new Error('something went worng');
    }
  } catch (error) {
    return res.status(500).json({
      'code': 'SERVER_ERROR',
      'description': 'something went wrong, Please try again'
    });
  }
}

module.exports = {
  getUsers: getUsers,
  getUserById: getUserById,
  createUser: createUser,
  updateUser: updateUser,
  deleteUser: deleteUser
}



Буду признателен за любые подсказки и предложения по коду

Спасибо!

1 Ответ

0 голосов
/ 01 июля 2019

Поле req.body будет пустым объектом, если в теле ничего не отправлено.Для любых запросов GET, если вы отправляете данные в конечную точку, вы отправляете через параметры (то есть, [website].com?paramkey1=paramvalue1&paramkey2=paramvalue2), и тело всегда будет пустым объектом.Для запросов POST и PUT вы отправите данные в теле, и req.body должны содержать эти данные.

Я предполагаю, что вы тестируете функцию createUser.Во-первых, я бы попробовал протоколирование консоли req.body в верхней части функций createUser, если имена полей неверны.Кроме того, разделы «Почтальон», в которые вы добавляете «Тело» и где вы добавляете «Парамсы», выглядят почти одинаково, поэтому вы можете попробовать занести запись в консоль req.query и / или подтвердить, что вы находитесь в нужном месте на Почтальоне.

Трудно узнать без дополнительной информации.Вы знаете, что маршруты устанавливаются, правильно?Вы получаете успешный ответ в Почтальоне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...