流星检查用户集合中是否存在用户名

时间:2016-03-23 06:26:21

标签: meteor

此Meteor客户端代码尝试检查用户集合中是否存在用户名。已经验证它是,但if条件评估为false。我究竟做错了什么?怎么解决?感谢

if (Session.get('taskSelected') == 'login') {
    var username = inputDoc[0].value + '-' + inputDoc[1].value;
    if (Meteor.users.findOne({username: username})) {
      console.log('found it in');
    }
}

修改

在回答之后,我意识到我在服务器文件中有这个发布代码

Meteor.publish('users', function () {
    if (this.userId) {
      return Meteor.users.find({_id: this.userId});
    }
 });

1 个答案:

答案 0 :(得分:2)

由于您的发布仅返回当前用户,因此客户端只获得一条记录,即当前登录用户的记录。如果您想访问其他用户,可能需要执行以下操作。

Meteor.publish('users', function () {
    if (this.userId) {
        return Meteor.users.find({}, { fields: { 'services': 0 } }); //to return all users.. you might have to limit the users based on your requirements.
    }
});

获得此出版物后,您可能需要检查是否已在当前模板中订阅了此出版物。如果你没有订阅这个,请订阅它,就像这样,

Template.yourTemplate.onCreated(function () { //replace "yourTemplate" with your template name.
    this.subscribe('users');
});

<强>更新

如果要检查用户名是否已存在,则需要调用此类服务​​器方法,

在服务器上:

Meteor.methods({
    'checkIfUserExists': function (username) {
        return (Meteor.users.findOne({username: username})) ? true : false;
    }
});

在客户端:

if (Session.get('taskSelected') == 'login') {
    var username = inputDoc[0].value + '-' + inputDoc[1].value;
    Meteor.call('checkIfUserExists', username, function (err, result) {
        if (err) {
            alert('There is an error while checking username');
        } else {
            if (result === false) {
                alert('username not found.');
            } else {
                alert('A user with this username already exists..');
            }
        }
    });
}