我有2个聊天室,每个房间我有5个用户和input
字段,每个用户都可以输入一些数字,submit
它可以在服务器上验证,如果数字相等(例如)至5
比此房间中的用户获胜,而其他房间的用户输了,所以我有5个用户赢了,5个输了。
所以,我想要的是:当一个团队赢了,而不是将赢得的用户重定向到某个WIN
页面,同时将丢失到LOSE
页面的用户重定向。并且!这一点非常重要!如果某些用户离线但他的团队输了或输了,那么下次用户登录时会显示LOSE
或WIN
页面,这取决于他的球队是否获胜。
所以我看到3个问题,我找不到解决方案:
Iron Router
)if
不合适)offline
,那么下次用户登录时会显示LOSE
或WIN
页我知道很多问题并且它们非常广泛,但找不到解决方案,请帮助某人!
答案 0 :(得分:1)
在组级别跟踪这个可能更简单,然后只需要一个模板助手来跟踪组的获胜/失败状态。您甚至不需要会话变量,所有参与者都会立即获得正确的通知或延迟通知。例如:
HTML:
<template name="wrapper">
{{#if state.inProgress}}
{{> gameTemplate}}
{{else}}
{{#if state.won}}
{{> winnnerTemplate}}
{{else}}
{{> loserTemplate}}
{{/if}}
{{/if}}
</template>
JS:
Template.wrapper.helpers({
state: function(){
var myGroupId = Meteor.user().myGroupId;
var outcome = Groups.find({ _id: myGroupId }).outcome;
return { inProgress: ( outcome === 'in progress'), won: ( outcome === 'won' ) };
}
});
这里我从帮助器返回一个对象而不是 inProgress 和 won 的单独变量,以避免搜索组两次。
我还将每个用户建模为属于一个组,其中 groupId 是用户对象中的一个键。这显然允许您在每个组中拥有任意数量的人以及任意数量的组。
我遗漏的是服务器端逻辑,它在Group文档中设置结果键。您必须在同一服务器方法中将一个组设置为 won ,将另一个组设置为 lost 。
答案 1 :(得分:0)
您遇到了设计问题。
和2.如果您想在应用中跟踪“群组”(如果他们输了或赢,重定向到输赢),您必须创建一个群组来管理您的“状态”游戏(我认为你的应用程序就像一个游戏)。
使用群组集合,您可以向成员显示信息,即如果我在群组中,即使我在您的应用程序中登录时处于离线状态,我也可以查看群组记录中的内容
它是一个设计问题,并且知道如何管理流星中的数据和事件