【问题标题】:How to tell if a user's email already exists using the account-password package如何使用 account-password 包判断用户的电子邮件是否已经存在
【发布时间】:2016-02-27 04:39:06
【问题描述】:

我的应用中有一个注册用户,例如:test@live.com。当用户输入电子邮件地址进行登录时,我想检查用户是否在每次按键时都存在并显示一条消息。

我写了以下代码:

Template.login.events({
    'keyup .userEmail': function(event){
        event.preventDefault();
        var email=$('[name=email]').val();
        var checkExistence=Meteor.users.find({ emails: { $elemMatch: { address: email } }}).count() > 0 ;
        console.log(checkExistence);
    }
});

如果电子邮件地址存在,则查询应返回 true。

当用户填写完整的电子邮件地址 test@live.com(存在于数据库中)时,checkExistence 应该为 true,但其值仍为 false。

为什么会这样?如何判断用户的邮箱是否已经在系统中?

【问题讨论】:

    标签: javascript mongodb meteor


    【解决方案1】:

    这很可能是因为客户没有回答这个问题所需的所有数据(也不应该)。这更好地实现为方法(它是异步的)。

    不希望将所有用户的电子邮件发送给用户,因为这是浪费服务器资源和带宽的不必要开销,也是安全/隐私问题。

    解决这个问题的一种方法是在模板中添加一个反应变量,它表示验证状态。当回调返回时,它可以检查正在验证的电子邮件是否仍然是在文本框中输入的电子邮件,并相应地更改状态。

    您可能还应该限制事件处理并在查询电子邮件之前对其进行验证。

    此外,请注意,您的事件处理方法中的event.target 包含由提供给events() 的对象键中的选择器指定的元素。

    【讨论】:

      猜你喜欢
      • 2018-09-13
      • 2017-07-11
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      相关资源
      最近更新 更多