Node.js 节点js调用函数
我正在使用NodeJS/Express编写一个大程序(大小) 我有多个app.post功能和所有功能。 所以,他们中的大多数人需要对即将到来的请求进行验证并发送响应 因此,我创建了一个名为Validate()的函数; 如果验证失败,我会将响应发送到,告知“请使用验证失败的信息重试” 所以,我创造了Node.js 节点js调用函数,node.js,Node.js,我正在使用NodeJS/Express编写一个大程序(大小) 我有多个app.post功能和所有功能。 所以,他们中的大多数人需要对即将到来的请求进行验证并发送响应 因此,我创建了一个名为Validate()的函数; 如果验证失败,我会将响应发送到,告知“请使用验证失败的信息重试” 所以,我创造了 function validate() { ...} 在 app.post('/',function(req,res){ ... validate(); } 我正在将req中所有必需的参数写入D
function validate() { ...}
在
app.post('/',function(req,res){
...
validate();
}
我正在将req中所有必需的参数写入DB,这样我就可以访问任何地方,所以现在这不是问题所在。
问题是:
如何发送“res”对象。
如果我尝试调用res,请立即在validate中写入。它会抱怨它未定义
那么如何解决这个问题呢
2) 我试图在DB中编写validate()的响应。
然后我试着给res打电话:也就是说:
app.post('/',function(req,res){
...
validate();
res ..
}
由于节点是asyc,res不使用此函数验证响应
如果有人遇到这样的问题您应该将其作为参数传递:
function validate(req, res) {
// ...
}
您还可以将其定义为自定义中间件,当请求被视为有效时,调用第三个参数next
,并将其传递给:
in-Express还可能对
next(err)
有用,谢谢。在函数声明中,我们还提到了数据类型。我们不需要提到数据类型吗here@TheLearner不。JavaScript变量是动态的,所以您只需将它们命名为--。不过,如果您使用的是另一种ECMAScript变体,如TypeScript,则可能需要指定类型。
app.post('/', function (req, res) {
validate(req, res);
// ...
});
function validate(req, res, next) {
var isValid = ...;
if (isValid) {
next();
} else {
res.send("please try again");
}
}
app.post('/', validate, function (req, res) {
// validation has already passed by this point...
});