node js调用函数

The*_*ner 0 node.js

我正在使用节点js/Express编写一个大型程序(大小).

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

所以,我创建了一个名为Validate()的函数; 如果验证失败,我会发送回复告诉"请再次尝试验证失败的信息".

所以,我创造了

function validate() { ...}
Run Code Online (Sandbox Code Playgroud)

在里面

app.post('/',function(req,res){
...

validate();
}
Run Code Online (Sandbox Code Playgroud)

请求中的所有必需参数我正在写入数据库,因此我可以访问任何位置,以便现在不是问题.问题是:如何发送"res"对象.如果我尝试呼叫res,请立即写入验证.它会抱怨它没有定义.

所以如何解决这个问题.

2)我试图在DB中写入validate()的响应.然后我试着打电话给res:那就是:

app.post('/',function(req,res){
...

validate();

res ..
}
Run Code Online (Sandbox Code Playgroud)

由于节点是asyc,因此res不使用该函数验证响应.

有没有人遇到这样的问题

Jon*_*ski 5

你应该将它们作为参数传递:

function validate(req, res) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)
app.post('/', function (req, res) {
    validate(req, res);

    // ...
});
Run Code Online (Sandbox Code Playgroud)

您还可以将其定义为自定义中间件,next在请求被视为有效时调用第三个参数,并将其传递给app.post另一个callback:

function validate(req, res, next) {
    var isValid = ...;

    if (isValid) {
        next();
    } else {
        res.send("please try again");
    }
}
Run Code Online (Sandbox Code Playgroud)
app.post('/', validate, function (req, res) {
    // validation has already passed by this point...
});
Run Code Online (Sandbox Code Playgroud)

Express中的错误处理也可能有用next(err).