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

时间:2015-06-20 04:38:04

标签: javascript mongodb meteor

我有一个meteor模板帮助器,其中包含一个搜索分数文档的函数。如果找不到匹配的文档,它会为用户创建一个新文档。不幸的是,meteor函数在发布和订阅函数完成之前执行import java.util.ArrayList; public class character { private String firstname; private String lastname; private job j; private static int count; private int id; private String gender; private ArrayList<Integer> relations = new ArrayList<Integer>(); public character(String n, String l, String g) { firstname = n; lastname = l; gender = g; id = count; count = count + 1; } //Method meet, not being recognized by class location. //Both files are in the same package in an Eclipse project. public boolean meet(character person) { relations.ensureCapacity(person.getID()); if(!(relations.get(person.getID()) > 0 && relations.get(person.getID()) <= 100)) { relations.add(person.getID(), new Integer(50)); if(relations.get(person.getID()).intValue() == 50) { return true; } } return false; } public int getID() { return id; } } 。每次都会创建一个新的UserScore文档。如果我打开自动发布,此问题就会消失,并且它不会创建重复记录。在模板助手执行之前,如何确保发布和预订函数先执行?

我是否需要在/ lib文件夹中放置一个meteor方法才能正常执行,或者有没有办法在客户端执行此操作?

var score = UserScores.findOne();

1 个答案:

答案 0 :(得分:1)

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

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

这是一种非常简化的方法,但你的助手最先运行应该没有问题。

编辑:Discover Meteor博客有一篇关于模板级订阅的精彩帖子。我强烈建议您阅读它:https://www.discovermeteor.com/blog/template-level-subscriptions/