首页 > 解决方案 > 如何将 Firebase 快照保存到变量中以在其他地方使用?

问题描述

甚至可能吗?

我已经看到这个问题在这里出现了很多,但似乎没有人给出我正在寻找的答案。假设您有以下代码,应该从您的数据库中获取 Firebase 对象并返回值:

function get(target){
    return database.ref(target).once("value",function(snapshot){
        //console.log(snapshot.val());
        return snapshot.val();
    });
}

就我而言,期望是返回一个对象,即{"hello":"world"}. 但是,我的结果始终是Promise {<pending>}. 我已经对此进行了一些修改,我即将获得的唯一其他输出是,undefinedPromise {<resolved> {"hello":"world"}}。后者几乎是我想要的,但还不完全是。

如何设置函数get()以使其返回实际值snapshot.val()而不是承诺。例如:

let response = get("/foo");
console.log(response["hello"]);

这样的结果应该是world

标签: javascriptfirebasefirebase-realtime-databasepromisefirebase-authentication

解决方案


您需要返回 aPromise才能在其他地方使用该对象:

function get(target){
    return Promise((resolve, reject) =>{
database.ref(target).once("value",function(snapshot){
        //console.log(snapshot.val());
        resolve(snapshot.val());
     });
    });
}

然后,当您调用此函数时,您可以执行以下操作:

get(target).then((data) =>{
  console.log(data);
});

推荐阅读