2016-03-23 147 views
0

此流星客户端代码尝试检查用户集合中是否存在用户名,它已经过验证,但是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}); 
    } 
}); 
+0

您是否意识到我必须从您提出的每个问题中删除mongodb标记?作为未来的提示,如果你实际上并没有询问关于mongodb查询语法或特定方法'.find()''.update()'等等,那么你的问题不是关于这个问题,而只是一个“流星”问题。请停止使用标签,除非问题实际上是关于所提及的主题。 –

+0

@BlakesSeven噢,对不起,我认为这个问题可能在代码中的任何地方,如果条件被评估有mongo findOne方法和Meteor和Mongo连接,我应该包含这两个标签,但“现在点采取“我只会在未来使用流星,这使我更容易。谢谢 –

+0

@FredJ。您是否在当前模板或父模板或“Meteor.startup”中订阅了“用户”发布?您的出版物仅返回当前登录的用户。但我认为,您还想发布其他用户。 – Kishor

回答

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'); 
}); 

UPDATE:

如果你想检查用户名是否已经存在与否,你需要调用服务器方法是这样,

在服务器:

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..'); 
      } 
     } 
    }); 
} 
+0

我只想知道用户是否正在注册,如果注册,则登录,如果没有,则创建帐户。我有它的地方,但想先发现他/她是否已经注册,因此我的原始问题。 –

+0

@FredJ。更新了答案。 – Kishor