2015-06-20 74 views
1

我有一個流星模板助手,它具有搜索分數文檔的功能。如果找不到匹配的文檔,則會爲用戶創建一個新文檔。不幸的是,流星功能在發佈和訂閱功能完成之前執行var score = UserScores.findOne();。每次創建一個新的UserScore文檔。如果我打開autopublish,則此問題消失,並且不會創建重複記錄。在模板助手執行之前,如何確保發佈和訂閱功能首先執行?Meteor函數在發佈和訂閱完成之前執行加載集合

我是否需要在/ lib文件夾中放置流星方法才能正確執行或者是否有辦法在客戶端執行?

var score = UserScores.findOne(); 

if(!score) { 
score = { 
    userId: Meteor.userId(), 
    total: 0, 
    goal: 200 
}; 
UserScores.insert(score); 
} 

回答

1

最簡單的方法是做模板級訂閱。

Template.myTemplate.onCreated(function() { 
    var subscription = this.subscribe('publicationName', publicationArguments); 
} 

這是一個非常簡單的方法,但你應該沒有問題,你的幫手首先運行。

編輯:Discover Meteor博客有一篇關於模板級訂閱的精彩文章。我強烈建議閱讀它:https://www.discovermeteor.com/blog/template-level-subscriptions/

+0

謝謝@SirCharlesWatson我需要開始閱讀Discover Media博客。這非常有幫助。 –

+0

@CalebMarkov很高興我能幫忙!我強烈建議購買Discover Meteor書。這是完全值得的錢,基本上涵蓋了你需要知道的一切。 – SirCharlesWatson

相關問題