2013-10-11 15 views
2

我的用戶在我的Meteor.js應用程序中觀察到一個非常奇怪的,不可重複的行爲。幾個小時的調試後,我發現特定的代碼行引起該問題(客戶端):調用集合#findOne在#insert找不到元素後

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 

你有任何想法,爲什麼這件事會發生,我怎麼能解決這個問題?

回答

3

這可能是一種競爭條件。插入的回調並不能保證您的發佈 - 訂閱關係已完成發送您插入的文章。它確實給你_id,但就是這樣。