【发布时间】:2016-01-08 00:42:22
【问题描述】:
我一直在慢慢地将一个回调繁重的模块转换为使用 Promise (Q),我在运行 find() 的 Mongoose 模型中遇到了一个奇怪的问题。简而言之,承诺链永远不会超过最初的find 命令。我已经将此方法恢复为它的回调实现,但仍然没有看到回调执行。我已将其分解为最基本的行为,handleMedia 函数永远不会运行。
function getMediaByURL(url) {
Media.find({url: url}, handleMedia);
function handleMedia(err, media) {
console.log(err);
console.log(media);
}
}
正在另一个模块中创建 DB 连接,但我看到所有正确的东西都以正确的顺序初始化,并且 Mongoose 连接的 readyState 是 1,紧接在 find 函数之前执行。如果我将find 方法转换为使用q.nbind 的承诺,如here 所述,并以1 秒的间隔记录值,则该值始终为{state: 'pending')。
我有另一个模型可以通过find 的承诺版本在同一连接上进行保存。我很茫然。
【问题讨论】:
-
有一个非常相似的问题,即使 readyState 为 1 也不会触发回调。对此有何更新?