【问题标题】:How to wait on a Mongo find/map result?如何等待 Mongo 查找/地图结果?
【发布时间】:2014-11-27 02:44:28
【问题描述】:

我有以下内容,其中 Posts 是 Meteor 中的 mongo 集合:

//Tracker.autorun(function() {
    // only return 25 most recent metadata
    var data = Posts.find({}, {
        "limit": 25,
        "sort": {
            "date": -1
        },
        "fields": {
            "metadata": 1
        }
    }).map(function(item) {
        return item.metadata;
    });

    // Asych Race condition! data has not been filled yet. 
    React.renderComponent(new StreamAtom({ "data": data}), document.body);
//});

问题是在 React 尝试渲染页面之前,“数据”尚未从 Mongo 返回并在 Map 中进行后处理。但是,我不确定如何将“React.render”行作为回调传递给 Mongo.find().map()。我等待从 Mongo 查找返回的数组结果的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: javascript mongodb asynchronous meteor callback


    【解决方案1】:

    代码第一次运行时,它们将没有数据,因此您需要检查这种情况并避免呈现结果(可能改为呈现加载指示器)。

    收到数据后,自动运行将重新运行,您将获得数据。

    通常,此类问题可以通过使用 IronRouter 在页面完全呈现之前“等待”数据来解决,但我们无法确定这是否适用于您的情况。

    【讨论】:

    • 嗨,除了 Meteor 特定的自动运行,有没有办法在 javascript 中等待这个?
    猜你喜欢
    • 2020-07-24
    • 2018-06-28
    • 2020-07-31
    • 1970-01-01
    • 2017-10-30
    • 2012-10-28
    • 2021-02-27
    • 2019-04-02
    • 1970-01-01
    相关资源
    最近更新 更多