我想将要从文档中查询的数字保留在firestore的集合中,并将该数字保存在有角度组件的局部变量中,以便在该组件的其他方法中使用。
我已经尝试实现Ittu提供的solution,但是这对我不起作用,因为我不知道在哪里使用Promise.all
这是我的代码:
var magNum: number;
docRef.ref.get().then(
function(doc) {
console.log("Document data:", doc.get('painPoint'));
magNum = doc.get('painPoint');
});
console.log('number \n' + magNum);
在控制台中的结果为undefined
,除非我将其放入如下函数中:
var magNum: number;
docRef.ref.get().then(
function(doc) {
console.log("Document data:", doc.get('painPoint'));
magNum = doc.get('painPoint');
console.log('number \n' + magNum);
});
然后在控制台中magNum为3
答案 0 :(得分:2)
您必须学习有关回调函数和Promise的知识。
查看您的代码:
var magNum: number;
docRef.ref.get().then(
function(doc) {
console.log("Document data:", doc.get('painPoint'));
magNum = doc.get('painPoint');
});
console.log('number \n' + magNum);
代码流如下所示:
magNum
声明为数字painPoint
号存储到magNum
变量中” magNum
。但是真正发生的是这件事
magNum
声明为数字magNum
(未定义,因为尚未完成firestore文档的获取)magNum
将被设置为painPoint
的值。 安慰:console.log('number \n' + magNum);
将在magNum = doc.get('painPoint');
行之前被调用,这就是{strong> console中magNum
是undefined
的原因!
您可以使用 async / await :
async yourFunction(...){
var magNum: number;
var doc = await docRef.ref.get();
magNum = doc.get('painPoint');
console.log('number \n' + magNum); // output is the value of painPoint
}