此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});
}
});
答案 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..');
}
}
});
}