javascript - 如何将 Firebase 快照保存到变量中以在其他地方使用?
问题描述
甚至可能吗?
我已经看到这个问题在这里出现了很多,但似乎没有人给出我正在寻找的答案。假设您有以下代码,应该从您的数据库中获取 Firebase 对象并返回值:
function get(target){
return database.ref(target).once("value",function(snapshot){
//console.log(snapshot.val());
return snapshot.val();
});
}
就我而言,期望是返回一个对象,即{"hello":"world"}
. 但是,我的结果始终是Promise {<pending>}
. 我已经对此进行了一些修改,我即将获得的唯一其他输出是,undefined
和Promise {<resolved> {"hello":"world"}}
。后者几乎是我想要的,但还不完全是。
如何设置函数get()
以使其返回实际值snapshot.val()
而不是承诺。例如:
let response = get("/foo");
console.log(response["hello"]);
这样的结果应该是world
。
解决方案
您需要返回 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);
});
推荐阅读
- conditional-statements - 错误条件下的修饰符
- r - y for x 来自黄土,但预测错误
- python - pyTesseract 不从图像输出文本
- html - 如何让字体出现在所有设备上?
- python - 在 PySpark 中使用 OR 折叠逻辑
- reactjs - Object.keys does not render my view in react
- go - 超出云函数 CPUMilliSeconds 配额
- apache-camel - Using Typed Default Property Placeholders defined in blueprint but resolved in Camel Java DSL
- python-3.x - pandas: aggregate rows values to create a new dataset
- bash - 替换 =~ 运算符检查 if 语句