Meteor函数在发布和订阅完成之前执行加载集合

问题描述:

我有一个流星模板助手,它具有搜索分数文档的功能。如果找不到匹配的文档,则会为用户创建一个新文档。不幸的是,流星功能在发布和订阅功能完成之前执行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); 
} 

最简单的方法是做模板级订阅。

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