如果我更改端点,则中间件不起作用

时间:2019-02-10 00:47:43

标签: javascript html node.js express middleware

我的NodeJs-Express服务器有一个奇怪的问题,它充当我的移动应用程序的后端。 事实是,我使用axios从前端向某些端点(如checkmail,checkusername)发送了发布请求,并且可以正常工作,但问题是它不适用于任何其他中间件功能。我从字面上复制了相同的支票邮件,只是使用了不同的路由,而使用/ checkmail时,我的状态为404! 另外/ login也不起作用,我在那里使用express.Router。 这是我的app.js代码:

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
var cors = require("cors");
const User = require("./models/user");
var AuthController = require('./auth/authController');
const app = express();
let server = require("http").Server(app);

app.use(cors());
app.use(
  bodyParser.urlencoded({
  extended: true
})
);
app.use(bodyParser.json());

 //Check if e-mail is aready in use, return "success" if not
app.use("/signup", (req, res) => {
  User.findOne({
  email: req.body.email
  },
  function (err, user) {
  if (user) {
    res.send("error");
  } else {
    res.send("success");
   }
 }
);
});

//Check if e-mail is aready in use, return "success" if not
app.use("/checkmail", (req, res) => {
  User.findOne({
  email: req.body.email
  },
  function (err, user) {
  if (user) {
    res.send("error");
  } else {
    res.send("success");
  }
 }
 );
});



app.use('/login', AuthController);

const port = process.env.PORT || 8500;

server.listen(port, () => {});

2 个答案:

答案 0 :(得分:0)

中间件接下来应该有第三个参数。

app.use("/checkmail", (req,res,next)=>{
//do something
})

答案 1 :(得分:0)

您必须在中间件中有第三个参数,它是告诉应用程序转到下一条路线的回调。

app.use('/signup', (req, res, next) => { // Normal middleware, it must have 3 parameters
  User.findOne({
     email: req.body.email
   },
   function (err, user) {
   if (user) {
     next(new Error('Some thing wrong')); // Failed, we will go to error-handling middleware functions
   } else {
     next(); // Success and we will go to next route
   }
  }
 );
});

app.get('/signup', (req, res, next) => { // This is "next route"
  res.send('Yay, welcome to signup')
});

app.use((err, req, res, next) => { //  error-handling middleware function, It must have 4 parameters
  res.status(500).send(err)
});

您可以在以下位置找到文档:https://expressjs.com/en/guide/error-handling.html