首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将从Firestore.collection() .get() .then()方法获取的数据分配给全局变量

如何将从Firestore.collection() .get() .then()方法获取的数据分配给全局变量
EN

Stack Overflow用户
提问于 2021-05-14 13:39:59
回答 1查看 419关注 0票数 1

我想从Firebase FireStore→中获取数据(文档中的一个特定字段),将该值分配给全局变量→console.log这个值。

我的研究到现在为止:

  1. 我尝试将值赋值给全局变量→不起作用。
  2. 我尝试返回获取的值

var a = firestore.collection("collection1").doc("doc1").get().then(){ return doc.data().FIELD}

  1. 从上面移除返回关键字。

目前,我正在执行如console.log()之类的嵌套代码。

我的代码现在看起来像什么

代码语言:javascript
运行
复制
var a = "BEFORE";
console.log(a); // BEFORE
firestore.collection("collection1").doc("doc1").then(
  function(doc) {
    const myData = doc.data();
    a = myData.Reciept_Series;
    console.log(a); // DESIRED_VALUE
  }
)
console.log(a); //BEFORE

我该怎么做a = DESIRED_VALUE呢?如何使用从FireStore获得的值。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-14 13:52:22

在下面的代码中,一旦Firebase返回数据,就会调用处理程序

代码语言:javascript
运行
复制
function handler(a) {
  // here you can work with a
}

firestore.collection("collection1").doc("doc1")
.then(doc => doc.data)
.then(myData => myData.Reciept_Series)
.then(handler)
.catch(console.error); // to debug: make sure the error (if any) is always reported

如果要等待数据,请使用异步/等待模式:

代码语言:javascript
运行
复制
(async function() {
  var a = await firestore.collection("collection1").doc("doc1")
    .then(doc => doc.data)
    .then(myData => myData.Reciept_Series)
  // here you can work with a
})();

请记住,承诺(由then()返回)是运行then()的,因此您的代码不是按自顶向下的顺序执行,而是作为另一个任务执行。

您可以在顶层只在await中调用模块,否则主线程将被其阻塞。请参阅链接页底部的支持表。

您的全局变量是分配的,但是是异步的。给代码一些时间,然后单击以下按钮:

代码语言:javascript
运行
复制
<button onclick="console.log(a)">Log data</button>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67535334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档