我有一个 meteor 模板助手,它具有搜索分数文档的功能。如果找不到匹配的文档,则会为用户创建一个新文档。不幸的是,meteor 函数在发布和订阅函数完成之前执行 var Score = UserScores.findOne();
。每次都会创建一个新的 UserScore 文档。如果我打开自动发布,这个问题就会消失,并且不会创建重复的记录。如何确保在模板助手执行之前先执行发布和订阅函数?
我是否需要在/lib文件夹中放置一个meteor方法才能正确执行,或者有没有办法在客户端执行它?
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/
关于javascript - Meteor 函数在发布和订阅完成加载集合之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30950301/