正确使用快速中间件的方法?

时间:2016-03-11 15:56:57

标签: javascript node.js mongodb express mean-stack

我对快速(连接)中间件有疑问。 我要做的是下载DoubleClick Bid Manager报告,将其解析并处理到我自己的MongoDB数据库中。

我的路线如下:

    app.route('/v1/spends/')
    .get(dbmPolicy.isAllowed, buckets.read, buckets.check, reports.create, buckets.process, reports.update);

buckets.read从Google云端存储中读取文件时,buckets.check会检查报告是否已经处理到MongoDB中,reports.create会创建包含csv元数据的报告。 buckets.process处理驻留在csv内部的数据,reports.update更新先前创建的报告,如果一切顺利完成的话。

当我发现测试上述过程非常困难时,我开始怀疑这是否是实现流程链的正确方法。如果这是正确的方法,我如何单独测试每个中间件功能的行为?

此致

1 个答案:

答案 0 :(得分:1)

您可能需要查看Async包,尤其是waterfall方法。这样你可以运行类似的东西:

app.get('/v1/spends', function(req, res) {
    async.waterfall([
        dbmPolicy.isAllowed,
        buckets.read,
        buckets.check,
        reports.create,
        buckets.process,
        reports.update    
    ], function (err, result) {
       if (err) res.status(500).send(err); 
       res.status(200).send(result);
    });
});
相关问题