表示下一个抛出错误,因为未定义

时间:2018-06-04 07:41:08

标签: javascript node.js express next

我试图在app.post()方法的回调中传递一些预定义的函数。我接下来没有定义错误。以下是我的代码。请告诉我在哪里做错了或者我在这里错过任何概念?

var express = require('express');

var app = express()

app.post('/api/signup', function(req, res) {
validateParams(req, res, next),
dbCall(req, res, next),
sendResponse(req, res)
})

我在我的进程之后定义并导入了每个函数并返回next()。

我的validateParams函数如下:

validateParams = function(req, res, next) {
    console.log("at validator ", req);
    next();
}

module.exports = validateParams;

我的dbCall函数如下:

dbCall = function(req, res, next) {
    console.log("at dbCall ", req);
    next();
}

module.exports = dbCall;

我的sendResponse函数如下:

sendResponse = function(req, res) {
    console.log("at dbCall ", res);
    res.send("Response sent successfully");
}

module.exports = sendResponse;

2 个答案:

答案 0 :(得分:2)

您可能忘记在回调中添加app.post('/api/signup', function(req, res, next) { validateParams(req, res, next), dbCall(req, res, next), sendResponse(req, res) }) 参数。

"results":

[{ "email1@domain1.com",

"email2@domain2.com",

"email3@domain3.com",

"email4@domain4.com",

"email5@domain5.com" }]

答案 1 :(得分:2)

我认为您正在尝试使用validateParams(req, res, next)dbCall(req, res, next)作为中间件功能。在这种情况下,你需要这样的东西:

const validateParams = (req, res, next) => {
  // do stuff here
  next();
}

const dbCall = (req, res, next) => {
  // do stuff here
  next();
}

app.post('/api/signup', validateParams, dbCall, function(req, res) {

sendResponse(req, res)
})

您可以阅读更多here