Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点js调用函数_Node.js - Fatal编程技术网

Node.js 节点js调用函数

Node.js 节点js调用函数,node.js,Node.js,我正在使用NodeJS/Express编写一个大程序(大小) 我有多个app.post功能和所有功能。 所以,他们中的大多数人需要对即将到来的请求进行验证并发送响应 因此,我创建了一个名为Validate()的函数; 如果验证失败,我会将响应发送到,告知“请使用验证失败的信息重试” 所以,我创造了 function validate() { ...} 在 app.post('/',function(req,res){ ... validate(); } 我正在将req中所有必需的参数写入D

我正在使用NodeJS/Express编写一个大程序(大小)

我有多个app.post功能和所有功能。 所以,他们中的大多数人需要对即将到来的请求进行验证并发送响应

因此,我创建了一个名为Validate()的函数; 如果验证失败,我会将响应发送到,告知“请使用验证失败的信息重试”

所以,我创造了

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...
});