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/
谢谢@SirCharlesWatson我需要开始阅读Discover Media博客。这非常有帮助。 –
@CalebMarkov很高兴我能帮忙!我强烈建议购买Discover Meteor书。这是完全值得的钱,基本上涵盖了你需要知道的一切。 – SirCharlesWatson