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

时间:2017-11-02 09:07:50

标签: mongodb meteor

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

1 个答案:

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