【问题标题】:collection.find mongojs synchronous callbackcollection.find mongojs 同步回调
【发布时间】:2012-12-21 10:42:15
【问题描述】:

我正在尝试为mongojscollection.find 方法编写自己的包装器,该方法应该返回指定查询选择的集合项(查询尚未实现,它应该只选择所有结果)。问题是我没有得到一系列结果。看起来 find 方法做了某种异步回调。那么如何强制同步调用或强制我的脚本等待呢?

Collection.prototype.find = function () {
    var result = new Array;
    if (Bridge.isServer) {
        db.collection(name).find(function(err, items) {
            items.forEach(function(item) {
                result.push(item);
            });
        });
    }
    return result;
}

【问题讨论】:

  • 不是你想要的答案,但正确的答案在这里:stackoverflow.com/questions/3919075/…
  • 谢谢,但添加另一个回调不是我想要的,我想强制我的函数等到结果从数据库返回然后返回它们。我知道这会在我等待的时候阻塞我的系统。
  • Node.js 是异步的,任何可能的阻塞都是巨大的反模式,并且会被任何力量阻止。异步回调没有什么不能做的,所以请使用它们,因为它们实际上使 node.js 更快。

标签: javascript node.js mongodb mongojs


【解决方案1】:

我认为你应该考虑让你的函数异步,但如果你坚持编写同步函数,有一个github project 用于使异步函数同步。

这是另一个处理相同主题的 SO 帖子:Convert an asynchronous function to a synchronous function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多