Firebase Web实时数据库搅拌用户ID为未定义

7d7tgy0s  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(124)

我有一个创建用户和登录验证设置firebase实时数据库。我有一个user字段在我的数据库中,我将在那里存储用户数据。但是,我想在user字段下创建一个子元素,它是用户id,然后用户信息可以显示在该子元素下。到目前为止,我已经尝试创建这样一个字段:

import { initializeApp } from "https://www.gstatic.com/firebasejs/9.13.0/firebase-app.js";
import { getDatabase, set, ref, update } from "https://www.gstatic.com/firebasejs/9.13.0/firebase-database.js";
import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword, onAuthStateChanged, signOut} from "https://www.gstatic.com/firebasejs/9.13.0/firebase-auth.js";

//Signup section
signup.addEventListener('click',(e) => {
    var username = document.getElementById('signup-user').value;
    var email = document.getElementById('signup-email').value;
    var schoolID = document.getElementById('signup-id').value;
    var password = document.getElementById('signup-pwd').value;
    
        createUserWithEmailAndPassword(auth, email, password, schoolID)
            .then((userCredential) => {
                // Signed in 
                const user = userCredential.user;

                update(ref(database, "user/" +user.id),{
                    username: username,
                    schoolID: schoolID,
                    email: email
                })
                alert('User Created!');
                // ...
            })
            .catch((error) => {
                const errorCode = error.code;
                const errorMessage = error.message;
                
                alert('Error please try again');
                // ..
            });
    });

但它只在我的实时数据库中提供了一个未定义的字段:

不仅如此,每次创建新用户时,它都会覆盖以前的条目。

envsm3lx

envsm3lx1#

userCredential.user是一个User类型的对象,它是UserInfo的子类。正如你从链接的API文档中看到的,User没有一个名为id的属性。它总是未定义的。
您需要的是uid。

update(ref(database, "user/" + user.uid), {...})

相关问题