我有以下内容,其中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查找返回的数组结果的最佳方法是什么?
谢谢!
答案 0 :(得分:0)
第一次运行代码时,它们将不是数据,因此您需要检查这种情况并避免渲染结果(可能会渲染加载指示符)。
收到数据后,自动运行将重新运行,您将获得数据。
通常情况下,通过在呈现页面之前使用IronRouter来“waitOn”数据来解决这类问题,但我们无法判断这是否适用于您的情况。