Как использовать несколько пост-функций в узле js epxress mongodb - PullRequest
0 голосов
/ 22 марта 2019

То, что я пытаюсь сделать здесь, это использовать две функции, но я не знаю, как использовать их обе, так как они обе являются пост-функциями с одинаковыми именами, и я хочу иметь возможность тестировать с помощью почтальона. Они находятся в одном файле

const jwt = require('jsonwebtoken');
const Joi = require('joi');
const bcrypt = require('bcrypt');
const _ = require('lodash');
const { users } = require('../models/user');
const express = require('express');
const router = express.Router();

это первая функция сообщения

router.post('/', async (req, res) => {
const { error } = validate(req.body);
if (error) {
    return res.status(400).send(error.details[0].message);
}

let user = await users.findOne({ email: req.body.email });
if (!user) {
    return res.status(400).send('Incorrect email or password.');
}

const validPassword = await bcrypt.compare(req.body.password, 
user.password);
if (!validPassword) {
    return res.status(400).send('Incorrect email or password.');
}
const token = jwt.sign({ _id: user._id }, 'PrivateKey');
res.header('x-auth-token', token).send(_.pick(user, ['_id', 'name', 
'email']));
});

это вторая функция поста

router.post('/', async (req, res) => {
const { error } = validate(req.body);
if (error) {
    return res.status(400).send(error.details[0].message);
}

let user = await users.findOne({ email: req.body.email });
if (!user) {
    return res.status(400).send('Incorrect email or password.');
}

const validPassword = await bcrypt.compare(req.body.password, 
user.password);
if (!validPassword) {
    return res.status(400).send('Incorrect email or password.');
}
});

function validate(req) {
const schema = {
    email: Joi.string().min(5).max(255).required().email(),
    password: Joi.string().min(5).max(255).required()
};

return Joi.validate(req, schema);
}

и, наконец, последняя строка в файле

module.exports = router; 

1 Ответ

0 голосов
/ 22 марта 2019

Вы не можете иметь 2 обработчика для одной и той же конечной точки REST с одинаковым МЕТОДОМ. Почему бы вам не изменить один на router.post('/login')

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