执行几个 mongoose 查询:如何改用 Promise? [英] Executing several mongoose queries: how to use promises instead?
本文介绍了执行几个 mongoose 查询:如何改用 Promise?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码,我想避免嵌套回调:
I have the following code and I would like to avoid nested callbacks:
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
有什么想法吗?
推荐答案
我找到了 async
图书馆是比这类事情的承诺更清洁的解决方案.对于这种特定情况,async.parallel
会很好用.
I find the async
library to be a cleaner solution than promises for this sort of thing. For this specific case, async.parallel
would work well.
我对 coffeescript 不太熟悉,但它看起来像这样:
I'm not overly familiar with coffeescript, but it would look something like this:
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
这篇关于执行几个 mongoose 查询:如何改用 Promise?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文