为什么从 fetch 函数返回的对象是它之外的函数?

Why the object returned from a fetch function is a function outside it?

我不明白为什么 data type 是我函数内部的一个对象,但外部是一个函数...有什么想法吗?谢谢

const fetchAllUsersData = async () => {
    setLoading(true);
    const userFromFirebase = await firebase.database().ref("users").orderByChild("nickname").equalTo(nickname).on("child_added", ((snapshot) => {
        const data = snapshot.val();
        console.log("data", typeof data); // show object
        return data;
    }));
    console.log("userFromFirebase",typeof userFromFirebase); // show function
}

fetchAllUsersData();

阅读文档:https://firebase.google.com/docs/reference/node/firebase.database.Reference#on

.on 方法将 return 任何东西,而不是您的 DataSnapshot。更好的方法是改用回调。这是一个例子:

const fetchAllUsersData = async (callback) => {
    setLoading(true);
    const userFromFirebase = await firebase.database().ref("users").orderByChild("nickname").equalTo(nickname).on("child_added", ((snapshot) => {
        const data = snapshot.val();
        console.log("data", typeof data); // show object
        callback(data);
    }));
}

fetchAllUsersData((data) => {
        console.log("data", typeof data); // still shows object
});