我是流星的初学者。我有一个表单,其中包含用户名和密码作为输入字段,最后是一个提交按钮。 我已经将两个字段中的数据正确地收集到两个变量中。现在我想要的是验证我的MongoDB集合中是否存在任何匹配的文档?我的下面的代码不起作用。怎么做?请帮忙。这是我的代码。
Template.form.events({
'submit.login':function(event){
event.preventDefault();
var user = document.getElementById("myForm").elements[0].value;;
var pass = document.getElementById("myForm").elements[1].value;
var usernamee = (Collection.Login.find({username: user},{password: pass})).count();
if(usernamee>0) {
alert("found");
} else {
alert("not found");
}
return false;
}
});
答案 0 :(得分:1)
首先,您的.find()
不正确:
var usernamee = (Collection.Login.find({username: user},{password: pass})).count();
应该是:
var usernamee = (Collection.Login.find({username: user, password: pass})).count();
假设您使用自动发布或显式发布将该集合发布到客户端。
然而:
您甚至可以让未登录的用户访问所有其他用户的用户名和明文密码!
Meteor包含负责用户管理的帐户包。你不需要重新发明轮子。您希望利用已经为您完成的安全工作。
您可以使用方法调用来查看是否已使用username
,并在创建帐户之前在用户界面中警告新用户。
客户端:
Meteor.call('usernameExists', username, function(err, result){
if (result) {
alert('Username '+username+' is already taken!')
// clear out the form etc...
}
});
服务器:
Meteor.methods({
usernameExists(username){
return Meteor.users.findOne({username}) !== 'undefined';
}
});