我是流星的初学者。我有一个表单,其中用户名和密码作为输入字段,最后还有一个提交按钮。我已经正确地将两个字段中的数据收集到两个变量中。现在我想要的是验证我的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;
}
});
首先,
您的.find()
不正确:
var usernamee = (Collection.Login.find({username: user},{password: pass})).count();
应该是:
var usernamee = (Collection.Login.find({username: user, password: pass})).count();
假设您要通过自动发布或显式发布将该集合发布到客户端。
然而:
您甚至允许非登录用户访问所有其他用户的用户名和明文密码!
Meteor包括为您处理用户管理的帐户包。你不需要重新发明轮子。您希望利用已经为您完成的安全工作。
可以使用方法调用来确定是否已使用username
,并在新用户创建帐户之前在 UI 中警告他们。
客户:
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';
}
});