我有一个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();
答案 0 :(得分:1)
最简单的方法是进行模板级订阅。
Template.myTemplate.onCreated(function() {
var subscription = this.subscribe('publicationName', publicationArguments);
}
这是一种非常简化的方法,但你的助手最先运行应该没有问题。
编辑:Discover Meteor博客有一篇关于模板级订阅的精彩帖子。我强烈建议您阅读它:https://www.discovermeteor.com/blog/template-level-subscriptions/