如果我执行一些查找,我会调用两次路由器。如果我删除了find语句,路由器只调用一次(这是我在其他情况下的预期)。
路由器配置:
Router.onBeforeAction(function() {
console.log("ROUTE!");
if (!Meteor.userId()) {
Router.go("login");
} else {
this.next();
}
}, {
except: ['login', 'signup']
});
我的路线:
Router.route("/", function() {
this.subscribe("games");
var lastDay = Games.findOne({}, {sort: {createdAt: -1}});
console.log(lastDay);
this.render("stats", {
data: function() {
return {
games: Games.find()
};
}
});
}, { name: "stats" });
使用lastDay查找,路由被调用两次。首先未定义结果,第二次我得到正确的对象。 删除lastDay语句,路由器工作正常。
更新:尝试将findOne放在帮助器中,控制台.log,它也是两次调用!第一次未定义,第二次是对象。
答案 0 :(得分:0)
尝试返回结果而不是存储在变量
中Router.route("/", function() {
this.subscribe("games");
this.render("stats", {
data: function() {
return {
games: Games.find({$gt:Games.findOne({}, {sort: {createdAt: -1}}).createdAt})
};
}
});
}, { name: "stats" });
答案 1 :(得分:0)
修复了使用waitOn进行订阅的问题。
Router.route("/", {
name: "stats",
waitOn: function() {
return Meteor.subscribe("games");
},
action: function() {
var lastDay = Games.findOne({}, {sort: {createdAt: -1}});
this.render("stats", {
data: function() {
return {
games: Games.find()
}
}
});
}
});