Meteor.users.findOne的问题

时间:2015-04-29 08:36:18

标签: javascript meteor

我目前正在开发一个应用程序,其中我已经构建了聊天功能。

我目前有一种非常有限的方式来创建对话,在此期间创建对话的用户和指定的目标用户都将其ID放入对话集合中的对话文档中。

我目前正在尝试遍历包含每个ID的数组,并在找到与当前用户不匹配的ID时,抓取其他用户个人资料信息。

otherUserName: function(){
    for ( i = 0; i < this.users.length; i++ ) {
        if( this.users[i].id !== Meteor.user()._id){
            return( Meteor.users.findOne({ _id: this.users[i].id }));
        }
    }
}

目前,它不会输出任何内容。它只显示为未定义。

我需要做些什么才能让名字出现?

2 个答案:

答案 0 :(得分:0)

I have a similar problem,但在服务器端。当您需要客户端上的用户集合时,您必须发布它并订阅它。

我在服务器端有一个带有

的publication.js
Meteor.publish("users", function () {
    return Meteor.users.find();
});

使用

在lib文件夹(对于客户端和服务器)中的router.js
Router.configure({
    layoutTemplate: 'layout',
    loadingTemplate: 'loading',
    notFoundTemplate: 'notFound',
    waitOn: function() { return [Meteor.subscribe('events'), Meteor.subscribe('users')]; }
 });

现在应该可以在客户端访问用户集合。也许尝试将发布功能限制为几个属性而不是所有属性。

答案 1 :(得分:0)

答案就是将返回的值转换为字符串:

otherUserName: function(){
    for ( i = 0; i < this.users.length; i++ ) {
        if( this.users[i].id !== Meteor.user()._id){
            var user = String(this.users[i].id);
            return Meteor.users.findOne({ _id: user }).profile.name;
        }
    }
},