在注册时检查Firestore身份验证中是否已存在电子邮件(角度)

时间:2019-09-24 14:24:05

标签: javascript node.js angular firebase google-cloud-firestore

当用户注册我们的应用程序时,我希望他们知道他们尝试注册的电子邮件是否已经存在,而无需提交表格(电子邮件字段模糊不清的A.K.A)。就目前而言,用户必须输入其详细信息并单击“注册”,然后才能让他们知道是否接收电子邮件。

通过在您输入电子邮件的Spotify注册​​中可以观察到所需的行为,一旦单击鼠标便会看到以下内容:

enter image description here

到目前为止,我已经编写了一个在模糊时触发的云函数(http),该函数从firestore admin auth调用getUserByEmail函数。功能如下:

export const checkUserEmail = https.onRequest((req, res) => {
    corsHandler(req, res, async () => {
        try {
            const email = req.body.email;
            await admin.auth().getUserByEmail(email);

            res.send({status: 200});
            return;
        } catch(e) {
            return Helpers._handleError(res, 400, e.message);
        }
    })
});

这确实可行,因为现在我现在可以检查是否存在电子邮件,但是问题是验证需要3到10秒之间的时间(足够长的时间让用户更深入地进行注册过程)。

有没有办法做到:

  1. 加快云功能或
  2. 验证用户是否已经通过使用Firestore的客户端直接提供的电子邮件进行了身份验证?

预先感谢

1 个答案:

答案 0 :(得分:0)

您可以使用users集合,您可能已经在这样做了。它可以存储用户信息,并且通常被证明是真正可以处理的,因为auth用户无法使用字段来更新,而字段并不如此。

您可以在此处存储用户的电子邮件,并与此处users集合的电子邮件字段相比,检查用户输入的集合。