Meteor 我误解了会话什么是好的选择?

Meteor 我误解了会话什么是好的选择?,meteor,Meteor,目前,我正在创建一个应用程序与流星恩学习它,而建设。我尝试合并会话,而不是将所有内容写入数据库(我正在做的事情)。在我的理解中,会话是一个全局对象,它存储键值对,并且是被动的。因此,我认为在我的简单游戏中使用模板渲染细节是一个很好的选择。我的目标是小游戏,不同的步骤将根据每个玩家所做的特定动作呈现在一个模板中 我重写了我的应用程序,并希望以这种方式使用会话(当然是简化的) 我的模板: <template name="gameRoom"> <button id='click

目前,我正在创建一个应用程序与流星恩学习它,而建设。我尝试合并会话,而不是将所有内容写入数据库(我正在做的事情)。在我的理解中,会话是一个全局对象,它存储键值对,并且是被动的。因此,我认为在我的简单游戏中使用模板渲染细节是一个很好的选择。我的目标是小游戏,不同的步骤将根据每个玩家所做的特定动作呈现在一个模板中

我重写了我的应用程序,并希望以这种方式使用会话(当然是简化的)

我的模板:

<template name="gameRoom">

  <button id='click'>click</button>

  {{#if lastAction}}
    {{>waiting}}
  {{/if}}
</template>



Template.gameRoom.events({
      lastAction: function() {
       return Session.get('lastAction') === Meteor.userId();
    };   
})

Template.gameRoom.helpers({
      'click #click' : function() {
        Session.set('lastAction', Meteor.userId());
    };
})

点击
{{{#如果最后一个动作}
{{>等待}
{{/if}
Template.gameRoom.events({
lastAction:function(){
return Session.get('lastAction')==Meteor.userId();
};   
})
Template.gameRoom.helpers({
'click#click':函数(){
Session.set('lastAction',Meteor.userId());
};
})
然而,这不工作,他们的方式,我认为它会工作。看起来每个会话对于每个用户都是独立的(考虑到它(某种程度上)是cookies的替代品,这当然是有意义的)

所以我的问题是:

  • 是否有一个很好的会话替代方案?我真的需要喝杯咖啡吗 或者使用数据库可以吗?本地数据库呢

您的
事件
帮助程序
功能向后,缺少两个花括号,并且您的事件键(按钮ID)错误。试试这个:

Template.gameRoom.helpers({
  lastAction: function() {
    return Session.equals('lastAction', Meteor.userId());
  }
});

Template.gameRoom.events({
  'click #click': function() {
    Session.set('lastAction', Meteor.userId());
  }
});
编辑:从您正在尝试做的事情来看,这样做可能是有意义的:

Actions = new Meteor.Collection('actions');

if (Meteor.isClient) {
  Template.gameRoom.events({
    'click #click': function() {
      Actions.insert({userId: Meteor.userId()});
    }
  });

  Template.gameRoom.helpers({
    lastAction: function() {
      var lastAction = Actions.findOne() || {};
      return lastAction.userId === Meteor.userId();
    }
  });
}

谢谢,我还不知道Session.equals:)。然而,也许我误解了你的评论。但我的目标是:如果一个用户单击按钮,模板只显示给该用户。但是我认为Session不是合适的工具,因此我问什么是最好的替代方法。你可以使用数据库来实现这一点。请参阅我的编辑。请注意,您仍然需要为
insert
添加一个允许规则,以防止用户在一行中执行两个操作。谢谢。用数据库写这篇文章感觉有点脏。谢谢你帮我澄清:)