执行几个mongoose查询:如何使用promises?

sig*_*mus 1 asynchronous mongoose promise coffeescript express

我有以下代码,我想避免嵌套回调:

app.get '/performers', (req, res) ->
    conductor = require('models/conductor').init().model
    soloist = require('models/soloist').init().model
    orchestra = require('models/orchestra').init().model
    chamber = require('models/chamber').init().model
    performers = {}
    conductor.find {}, (err, result) ->
        performers.conductor = result
        soloist.find {}, (err, result) ->
            performers.soloist = result
            orchestra.find {}, (err, result) ->
                performers.orchestra = result
                chamber.find {}, (err, result) ->
                    performers.chamber = result
                    res.json performers
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Joh*_*yHK 5

我发现async图书馆比这种事情的承诺更清晰.对于这个特定情况,async.parallel会很好.

我对coffeescript并不是很熟悉,但它看起来像这样:

performers = {}
async.parallel [
    (callback) ->
        conductor.find {}, (err, result) ->
            performers.conductor = result
            callback err
    (callback) ->
        soloist.find {}, (err, result) ->
            performers.soloist = result
            callback err
    (callback) ->
        orchestra.find {}, (err, result) ->
            performers.orchestra = result
            callback err
    (callback) ->
        chamber.find {}, (err, result) ->
            performers.chamber = result
            callback err
    ], (err) ->
        res.json performers
Run Code Online (Sandbox Code Playgroud)