流星检查文档是否已存在于集合中



我是流星的初学者。我有一个表单,其中用户名和密码作为输入字段,最后还有一个提交按钮。我已经正确地将两个字段中的数据收集到两个变量中。现在我想要的是验证我的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';
  }
});

最新更新