如何在Node js epxress mongodb中使用多个发布功能

时间:2019-03-22 14:08:58

标签: node.js mongodb express post

我想在这里使用2个函数,但我不知道如何使用这两个函数,因为它们都是同名的Post函数,并且我想使用Postman进行测试。这些都在同一个文件中

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 :(得分:0)

对于具有相同方法的相同REST终结点,您不能具有2个处理程序。为什么不将其中一个更改为router.post('/login')