如何使用Meteor.js显示所有LOGGED IN用户的列表

时间:2014-09-03 11:26:28

标签: javascript meteor user-accounts user-profile

我一直在努力获取Meteor聊天应用中登录用户的列表。 我尝试了很多不同的东西。我设法在用户配置文件对象上添加登录标志。 服务器端:

Accounts.onCreateUser(function(options, user) {
    if(!options.profile){
        options.profile = {}
    }
    options.profile.login = false;
    if (options.profile)
        user.profile = options.profile;
    return user;
});

在浏览器控制台中,我得到了这个:

Meteor.user().profile
Object {login: false}

所以这似乎有用。

现在我要列出用户是否已登录: 客户端

Deps.autorun(function(){
    if(Meteor.userId()){
        Meteor.user().profile.login=true;
    }
});

检查登录后登录仍为false。

此模板html为我提供了所有用户名列表,但没有登录标志

{{#each allUsers}}
<p>{{username}}</p><p>{{profile.login}}</p>
{{/each}

所以我的问题是:profile.login仍然是false,我无法显示profile.login,但会显示用户名。

提前谢谢你。问候Joris

1 个答案:

答案 0 :(得分:4)

要更改用户profile.login属性,您需要执行Meteor.users.update(..)或调用执行此操作的服务器方法。只是更改用户对象的属性将不起作用。

通常我建议不要将用户状态持久保存到mondodb数据库中,而是将其保存在内存中的Collection中。

最简单的方法是使用其中一个软件包:

或研究他们的源代码,了解如何传播用户状态。