路由已正确声明,但仍得到无法获得任何响应错误

时间:2018-11-26 18:34:04

标签: node.js rest express

我已经使用express和node制作了一个API。

这是我的app.js

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

// setup dotenv to read environment variables
dotenv.config()

// Load Environment Varibles
const env = require('./utils/env');

// INIT MONGODB CONNECTION
require('./mongoose');

// create a new express application
const app = express();

// setup bodyparser middleware to read request body in requests
// we're only reading JSON inputs
app.use(bodyParser.json());

// Listen to API routes
const apiRoutes = require('./routes')
app.use('/api', apiRoutes);

// Start listening to requests
app.listen(env.PORT, () => {
  console.log(`Server started on PORT ${env.PORT}`);
});

这是要导入的API路由

const express = require('express');
const apiController = require('./apiController');
const apiValidator = require('./apiValidator');
const router = express.Router();

router.post('/login', apiValidator.loginUserValidator, apiController.loginUserController);

router.get('/rand', (req, res) => {
  res.send('Some randon text');
});

module.exports = router;

这是中间件

const {
  failureResponse
} = require('./../utils/response');
const errorcodes = require('./../utils/errorcodes');

const loginUserValidator = (req, res, next) => {
  const user = req.body;
  if (!user.username) {
    return res.status(400).json(failureResponse(errorcodes.ERROR_INVALID_BODY_PARAMETER, "Invalid username"));
  }

  if (!user.password) {
    return res.status(400).json(failureResponse(errorcodes.ERROR_INVALID_BODY_PARAMETER, "Invalid password"));
  }
  if (user.authTokens) {
    delete user.authTokens;
  }
  next();
};

module.exports = {
  loginUserValidator
};

这是控制者

const User = require('./../models/user');
const {
  successResponse,
  failureResponse
} = require('./../utils/response');
const errorcodes = require('./../utils/errorcodes');

const loginUserController = async (req, res) => {
  try {
    const user = req.body;
    // find if the user already exists
    const existingUser = await User.findOne({
      username: user.username
    });

    if (existingUser) {
      // user exists. generate token and login user
      console.log('Existing user login');
      const token = existingUser.generateAuthToken();
      return res.status(200).json(successResponse(token));
    } else {
      console.log('New user login');
      const savedUser = await new User(user).save();
      const token = savedUser.generateAuthToken();
      return res.status(200).json(successResponse(token));
    }
  } catch (e) {
    console.log(e);
    return res.status(400).json(failureResponse(errorcodes.ERROR_SERVER_ERROR, "Unable to login user"));
  }
};

module.exports = {
  loginUserController
};

这里的问题是,当我尝试点击Postman的登录路线时,出现了错误消息Could not get any response

但是当我打到rand路线时,输出是正确的。 因此,问题不在于代码的安排。 为什么我不能在这里使用登录路径?

0 个答案:

没有答案