简体   繁体   English

如何返回文档数据 Firebase 数据库?

[英]How can I return document data Firebase database?

I'm learning React/Firebase and I have a function that queries parent node for a specific user.我正在学习 React/Firebase,我有一个函数可以查询特定用户的父节点。

export const fetchUserDocument = (userId) => {
  const db = database.ref("users");
  //if I write return here it outputs
  //  const user = snapshot.val();
  //  return user;
  db.child(userId).on("value", (snapshot) => {
    const user = snapshot.val();
    return user;
  });
  //return db 

};

Then in another file I can call on this function to retrieve user data like this const user = await fetchUserDocument(userId) but I am getting undefined when I console.log(user) .然后在另一个文件中,我可以调用这个函数来检索用户数据,像这样const user = await fetchUserDocument(userId)但是当我console.log(user)时我得到了 undefined 。

onSnapshot is asnynchronous, so it cannot return value to you immediately. onSnapshot 是异步的,因此它不能立即向您返回值。 You need to pass a callback function to fetchUserDocument and call it when you got the user data:您需要将回调函数传递给 fetchUserDocument 并在获取用户数据时调用它:

export const fetchUserDocument = (userId, cb) => {
  const db = database.ref("users");

  db.child(userId).on("value", (snapshot) => {
    const user = snapshot.val();
    cb(user);
  });
};

fetchUserDocument(userId, (user) => {
    console.log(user);
});

Another approach would be returning a promise from fetchUserDocument:另一种方法是从 fetchUserDocument 返回一个承诺:

export const fetchUserDocument = async (userId) => {
    return new Promise((resolve, reject) => {
        const db = database.ref("users");

        db.child(userId).on("value", (snapshot) => {
            const user = snapshot.val();
            resolve(user);
        });
    });
};

This would give you the result you want:这会给你你想要的结果:

const user = await fetchUserDocument(userId);
console.log(user);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用firebase-admin模块使用Node.js从Firebase数据库返回有序数据? - How can I return ordered data from Firebase database with Node.js using the firebase-admin module? 如何获取用户ID作为Firebase中数据的文档? - How can I fetch User ID as document on firebase in my data? 如何从 firebase 中的引用文档中检索数据? - how can i retrieve data from a referenced document in firebase? 如何将新数据添加到Firebase数据库中的现有数据? - How can I add new data to existing data in a firebase database? 如何将 Firebase 服务器返回的文档返回并解析给客户端? - How can I return and parse document returned from the Firebase server to the client? 如何从Firebase实时数据库检索数据? - How can I retrieve data from firebase realtime database? 如何获取作为对象而非数组的 Firebase 数据(实时数据库)? - How can I fetch Firebase data (Realtime Database) that is an object, not an array? 如何显示 Firebase 数据库中的数据? - How can I display data from Firebase database? 如果 Firebase 数据库部分中的数据未定义,我如何更新配置文件? - How I can updateProfile if data undefined in Firebase Database section? 如何从我的 firebase 数据库中检索数据? - How can I retrieve data from my firebase database?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM