node js调用函数

时间:2012-12-17 04:59:05

标签: node.js

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

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

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

所以,我创建了

function validate() { ...}

中的

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

validate();
}

请求中的所有必需参数我正在写入数据库,因此我可以访问任何地方,这样就不会出现问题了。 问题是: 如何发送“res”对象。 如果我尝试呼叫res,请立即写入验证。它会抱怨它没有定义。

所以如何解决这个问题。

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

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

validate();

res ..
}

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

有任何人遇到像这样的问题

1 个答案:

答案 0 :(得分:5)

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

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

    // ...
});

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

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

Error handlingnext(err)也有用。