Я пытаюсь зарегистрировать пользователя в базе данных mongodb с помощью Express, но когда я делаю POST вызов
localhost:3000/users/register
с корпусом:
{
"firstName": "Jason",
"lastName": "Watmore",
"username": "jason",
"email": "jason@jason.com",
"password": "my-super-secret-password"
}
Почтальон дает: 500 Внутренняя ошибка сервера с этим телом:
TypeError: Cannot read property 'username' of undefined
at Object.create (E:\Drive\Desarollo de Aplicaciones Web\Proyecto Final\apiREST\users\user.service.js:42:50)
at register (E:\Drive\Desarollo de Aplicaciones Web\Proyecto Final\apiREST\users\users.controller.js:23:17)
Это метод, на который указывает ошибка
async function create(userParam) {
// validate
if (await User.findOne({ username: userParam.username })) {
throw 'Username "' + userParam.username + '" is already taken';
}
Что происходит и как я могу это исправить?
Контроллер находится в точке, где он вызывает метод, который завершается ошибкой:
const express = require('express');
const router = express.Router();
const userService = require('./user.service');
// routes
router.post('/authenticate', authenticate);
router.post('/register', register);
router.get('/', getAll);
router.get('/current', getCurrent);
router.get('/:id', getById);
router.put('/:id', update);
router.delete('/:id', _delete);
module.exports = router;
function authenticate(req, res, next) {
userService.authenticate(req.body)
.then(user => user ? res.json(user) : res.status(400).json({ message: 'Username or password is incorrect' }))
.catch(err => next(err));
}
function register(req, res, next) {
userService.create(req.body)
.then(() => res.json({}))
.catch(err => next(err));
}