表示下一个抛出错误,因为下一个未定义
express next throwing error as next is not defined
我试图在 app.post()
方法的回调中传递一些预定义的函数。我收到 next is not defined 错误。下面是我的代码。请指出我哪里做错了或者我在这里遗漏了任何概念?
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;
您可能忘记在回调中添加 next
参数。
app.post('/api/signup', function(req, res, next) {
validateParams(req, res, next),
dbCall(req, res, next),
sendResponse(req, res)
})
我认为您正在尝试使用 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
我试图在 app.post()
方法的回调中传递一些预定义的函数。我收到 next is not defined 错误。下面是我的代码。请指出我哪里做错了或者我在这里遗漏了任何概念?
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;
您可能忘记在回调中添加 next
参数。
app.post('/api/signup', function(req, res, next) {
validateParams(req, res, next),
dbCall(req, res, next),
sendResponse(req, res)
})
我认为您正在尝试使用 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