如何使用Express app中的promises?

时间:2013-11-16 15:25:31

标签: node.js express parse-platform promise

我正在尝试在app.get函数中使用一个promise,它将运行一个将在promise上运行的查询。但问题是响应不等待承诺而只是回应。

任何想法代码应该如何承诺可以在快递应用程序中的app.get中生存?

2 个答案:

答案 0 :(得分:22)

app.get('/test', function (req, res) {
    db.getData()
    .then(function (data) {
        res.setHeader('Content-Type', 'text/plain');
        res.end(data);
    })
    .catch(function (e) {
        res.status(500, {
            error: e
        });
    });
});

答案 1 :(得分:5)

以下是Express documentation的回答:

app.get('/', function (req, res, next) {
  // do some sync stuff
  queryDb()
  .then(function (data) {
    // handle data
    return makeCsv(data)
  })
  .then(function (csv) {
    // handle csv
  })
  .catch(next)
})

app.use(function (err, req, res, next) {
  // handle error
})

值得注意的是,主要是将next传递给.catch(),以便常见的错误处理路径可以将错误处理逻辑封装在下游。