如何在 Firebase 函数之外使用 Firebase 用户对象?

How can I use the Firebase user object outside of the Firebase function?

我可以使用来自 Firebase 的 Google Auth 将用户登录到我的应用程序。但是,我似乎无法让 User 对象的任何部分出现在我的应用程序的前端(我使用的是 Pug 模板)。我怎样才能做到这一点?

这是我使用 Google Auth:

将用户登录到我的网络应用程序的代码
document.getElementById('LogInButton').addEventListener('click', (e) => {
  signInWithPopup(auth, provider)
    .then((result) => {
      // This gives you a Google Access Token. You can use it to access the Google API.
      const credential = GoogleAuthProvider.credentialFromResult(result);
      const token = credential.accessToken;
      // The signed-in user info.
      const user = result.user;
      // ...
      window.setTimeout(() => {
        location.assign('/dashboard');
      }, 1500);
    })
    .catch((error) => {
      // Handle Errors here.
      const errorCode = error.code;
      const errorMessage = error.message;
      // The email of the user's account used.
      const email = error.email;
      // The AuthCredential type that was used.
      const credential = GoogleAuthProvider.credentialFromError(error);
      // ...
    });
});

我希望能够在整个应用程序中引用我的 .pug 文件中的“用户”变量。现在,我有一个 viewController 文件,我可以在其中传递数据,例如:

exports.getSignIn = (req, res) => {
  res.status(200).render('signin', {
    title: `Sign in`,
  });
};

我有没有办法将用户对象从 index.js 传递到我的 viewController 以便它在 Pug 模板中可用?我很迷路。如有任何帮助,我们将不胜感激。

这里的问题有两个:

  1. 您需要将变量传递给您的 pug 模板,这可以在您告诉 pug 呈现模板时执行(如示例 here 所示)。
  2. 用户数据是从 Firebase 异步加载的。您需要在加载数据后仅呈现模板,或者在加载后重新呈现模板。

我没有看到第二步的任何固定解决方案,但我通常会寻找一种方法来从回调中调用哈巴狗渲染(所以你现在有 location.assign('/dashboard'))。

也看到这个类似的问题:

  • How to dynamically render Async function output with Express/Pug?(类似问题,但在 Express 中)。