如何在 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 模板中可用?我很迷路。如有任何帮助,我们将不胜感激。
这里的问题有两个:
- 您需要将变量传递给您的 pug 模板,这可以在您告诉 pug 呈现模板时执行(如示例 here 所示)。
- 用户数据是从 Firebase 异步加载的。您需要在加载数据后仅呈现模板,或者在加载后重新呈现模板。
我没有看到第二步的任何固定解决方案,但我通常会寻找一种方法来从回调中调用哈巴狗渲染(所以你现在有 location.assign('/dashboard')
)。
也看到这个类似的问题:
- How to dynamically render Async function output with Express/Pug?(类似问题,但在 Express 中)。
我可以使用来自 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 模板中可用?我很迷路。如有任何帮助,我们将不胜感激。
这里的问题有两个:
- 您需要将变量传递给您的 pug 模板,这可以在您告诉 pug 呈现模板时执行(如示例 here 所示)。
- 用户数据是从 Firebase 异步加载的。您需要在加载数据后仅呈现模板,或者在加载后重新呈现模板。
我没有看到第二步的任何固定解决方案,但我通常会寻找一种方法来从回调中调用哈巴狗渲染(所以你现在有 location.assign('/dashboard')
)。
也看到这个类似的问题:
- How to dynamically render Async function output with Express/Pug?(类似问题,但在 Express 中)。