Mongoose查找回调未执行

时间:2015-10-10 00:13:30

标签: node.js mongodb mongoose

我一直在慢慢地将一个回调密集的模块转换为使用promises(Q),并且我遇到了运行find()的Mongoose模型的一个奇怪问题。简而言之,承诺链永远不会超过最初的find命令。我已经将此方法恢复为其回调实现,但仍然没有看到回调执行。我已将其分解为最基本的行为,handleMedia函数永远不会运行。

function getMediaByURL(url) {
  Media.find({url: url}, handleMedia);

  function handleMedia(err, media) {
    console.log(err);
    console.log(media);
  }
}

正在另一个模块中创建数据库连接,但我看到所有正确的事情都以正确的顺序初始化,并且Mongoose连接的readyState之前就是1执行find函数。如果我使用find q.nbind{state: 'pending')方法转换为承诺,并按1秒间隔记录该值,则值始终为find

我有另一个模型可以使用me[prop];的承诺版本保存在同一个连接上。我不知所措。

1 个答案:

答案 0 :(得分:0)

你在“查找函数”之后声明了“handleMedia函数”,所以只调用了回调函数..在你的代码中,首先找到函数在“handleMedia函数”初始化之后执行

所以试试这个

function getMediaByURL(url) {
    function handleMedia(err, media) {
        console.log(err);
        console.log(media);
    }
    Media.find({url: url}, handleMedia);
}