首页 > 解决方案 > Firebase:使用 DocumentSnapshot id 作为用户 uid。想法?

问题描述

目前,用户配置文件是通过将用户添加到 firestore 集合来创建的。

然后我有一个 onCreate 函数,它将在 Firebase 身份验证中创建一个用户。

使用 firestore docId 作为创建的用户 uid 会有问题吗?

谢谢

export const createUser = functions.region('europe-west2')
    .firestore.document('users/{user}')
    .onCreate(async (snap, context) =>
        executeOnce(context.eventId, async (transaction: FirebaseFirestore.Transaction) => {
            const data = snap.data();

            await auth.createUser({
                uid: snap.id,
                email: data.email,
                password: //,
                displayName: `${data.firstName} ${data.lastName}`,
            }).then(async function (newUser) {
                return db.collection('users').doc(snap.id)
                    .update({
                        status: 'Active',
                    });
            }).catch(function (error) {
                return console.error(`Error creating user, ${error}`);
            });

        }));

标签: firebasefirebase-authenticationgoogle-cloud-functions

解决方案


我不明白为什么这会是一个问题。通常来自 Firebase 身份验证的 UID 用作 Firestore 文档 ID。它只是一个标识符,因此您可以准确地指向包含当前用户信息的文档。(<= 只是一个例子)

const uid = firebase.auth().currentUser.uid
const docRef = firebase.firestore().collection("users").doc(uid)

最后,它只是一个唯一的字符串。所以只要它们都一样,你应该没问题。即使不是,您仍然可以使用.where("userId", "==", uid).


推荐阅读