【问题标题】:Calling Collection#findOne after #insert doesn't find the element#insert 之后调用 Collection#findOne 找不到元素
【发布时间】:2013-10-11 07:36:11
【问题描述】:

我的用户在我的 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

您知道为什么会发生这种情况,以及如何解决这个问题吗?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    这可能是一个竞争条件。 insert 的回调并不能保证您的 pub-sub 关系已完成发送您插入的文章。它确实为您提供了_id,但仅此而已。

    【讨论】:

      猜你喜欢
      • 2018-10-09
      • 2014-05-09
      • 1970-01-01
      • 2019-04-12
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      相关资源
      最近更新 更多