我的用户正在Meteor.js应用程序中观察到一种非常奇怪,不可重现的行为。经过几个小时的调试后,我发现导致问题的特定代码行(在客户端上):
Articles = new Meteor.Collection("articles")
Articles.insert({name: "..."}, (err, id) ->
article = Models.Articles.findOne(id)
console.log("Created - #{err} - #{id} - #{article}")
)
大多数情况下输出看起来像预期的那样,但有时Models.Articles.findOne
在客户端上找不到创建的文章,尽管它保存在数据库中:
Created - undefined - 1234 - undefined
您是否知道为什么会发生这种情况,以及如何解决此问题?
答案 0 :(得分:3)
这可能是一场竞争条件。 insert的回调不保证您的pub-sub关系已完成向下发送您插入的文章。它确实为您提供_id
,但就是这样。