Meteor mongo find两次呼叫铁路由器

Meteor mongo find两次呼叫铁路由器,meteor,Meteor,我有一个路由器被调用两次,如果我执行一些查找。如果我删除find语句,路由器只调用一次(这是我在另一种情况下所期望的) 路由器配置: Router.onBeforeAction(function() { console.log("ROUTE!"); if (!Meteor.userId()) { Router.go("login"); } else { this.next(); } }, { except: ['login'

我有一个路由器被调用两次,如果我执行一些查找。如果我删除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 find,路线被调用两次。第一次未定义结果,第二次得到正确的对象。 删除lastDay语句后,路由器工作正常


更新:试图在助手console.log中完成findOne,但它也调用了两次!第一次未定义,第二次为对象。

尝试返回结果,而不是存储在变量中

Router.route("/", function() {
    this.subscribe("games");


    this.render("stats", {
        data: function() {
            return { 
                games: Games.find({$gt:Games.findOne({}, {sort: {createdAt: -1}}).createdAt})
            };
        }
    });
}, { name: "stats" });

尝试返回结果,而不是存储在变量中

Router.route("/", function() {
    this.subscribe("games");


    this.render("stats", {
        data: function() {
            return { 
                games: Games.find({$gt:Games.findOne({}, {sort: {createdAt: -1}}).createdAt})
            };
        }
    });
}, { name: "stats" });

修正了使用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()   
                }
            }
        });
    }
});

修正了使用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()   
                }
            }
        });
    }
});

尝试返回{games:games.find(),lastDay:games.findOne({},{sort:{createdAt:-1}}})@是的,这很有效。但是我希望最后一天的结果在我的游戏中使用它:games.find()。尝试返回{games:games.find(),最后一天:games.findOne({},{sort:{createdAt:-1}}})@是的,这很有效。但是我想在我的游戏中使用最后一天的结果:games.find()。我不能。我假装在游戏中使用createdAt$gte进行查找。更新:尝试在助手中进行查找,但它也调用了两次!第一次未定义,第二次对象。第二次。。。这就像搜索一次,有什么东西改变了它,正确的数据就会产生反应。但是有什么变化呢?尝试获取waitOn上的数据,当它准备好传递给renderWell时,我修复了它,将订阅放入waitOn。。。检查我自己的修复,我不能。我假装在游戏中使用createdAt$gte进行查找。更新:尝试在助手中进行查找,但它也调用了两次!第一次未定义,第二次对象。第二次。。。这就像搜索一次,有什么东西改变了它,正确的数据就会产生反应。但是有什么变化呢?尝试获取waitOn上的数据,当它准备好传递给renderWell时,我修复了它,将订阅放入waitOn。。。检查我自己的修复。