如何避免与mongoose/节点的深层嵌套代码?
我正在尝试提高使用大量mongooose的biggish nodejs应用程序的可读性。 问题是,有很多依赖查询的callback失控。
处理这个问题的做法是什么?
您的问题有三种常见的解决scheme。
首先是async.js库。
第二个是使用承诺。 node.js中有多个promise的实现。 我知道三个实现:
- 节点承诺
- 发誓
- Q承诺
第三个是使用纤维 。 有纤维承诺图书馆,为您做所有棘手的工作。
之前有很多类似的问题。 例如, 检查这一个 。
所有这些库都做同样的事情 – 他们使node.jsasynchronous代码漂亮和可读。 所以,只要选一个看起来比较简单的。
至于我,我更喜欢async.js
库。
更新: mongoose.js拥有自己的内置诺言–mpromise 。 你可以用mongoose.promise
来访问它。 但是,只要你在mongoose
的查询上调用exec()
函数,它就会返回一个承诺。 除了REPL
,我从来没有真正使用过mongoose.js
promise,但是你可以试试看。