【发布时间】:2017-11-27 23:08:55
【问题描述】:
我试图获取单个文档的数据并将其保存到一个变量中,以便稍后在另一个逻辑操作中使用它。 firestore 文档显示只有通过 promises 才能做到这一点,但我不能将 doc.data() 值设置为变量以供以后使用,只能在 then() 或 catch() 方法中使用。我可以在那里设置一个变量,但我不能在承诺之外使用它。
Firestore 文档示例:
var docRef = db.collection("cities").doc("SF");
docRef.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
【问题讨论】:
-
如果变量是在外部声明的,你可以很好地在
then函数中设置它。 -
不要与异步作斗争,你永远不会赢。了解异步代码是如何工作的,如何使用它。您基本上要求的是如何从异步函数中获得同步结果 - 它永远无法完成。也许
async/await“糖”会帮助你。虽然它仍然是异步的,但对某些人来说看起来不那么令人生畏
标签: javascript google-cloud-firestore