从firebase中的字段获取值

时间:2020-09-04 12:17:56

标签: reactjs firebase google-cloud-firestore

我正在尝试检索字段的特定值并将其存储在名为joiningScore的变量中。这使joinScore成为一个对象,其中包含一个值。我如何获得该价值。我尝试在.get(“ currentPos”)之后插入.then方法,但是它抛出一个错误,说docSnapshot.get()。然后不是函数。

var joiningScore = positionDoc.get().then((docSnapshot) => { return docSnapshot.get("currentPos"); })

  const positionDoc = frebase.firestore().collection('position').doc('kY3k3lmnCIVG3Qi6LxUZ');

此处positionDoc是对Firestore中文档的引用。

1 个答案:

答案 0 :(得分:1)

这是因为您要为变量分配Promise chain

您需要等待get()方法返回的Promise履行完毕才能获取值。有关更多详细信息,请参见此doc

因此,遵循这些原则应该可以:

const positionDoc = firebase.firestore().collection('position').doc('kY3k3lmnCIVG3Qi6LxUZ');

var joiningScore;

positionDoc.get().then((docSnapshot) => {
   joiningScore = docSnapshot.get("currentPos");      
})

您还可以如下使用异步函数:

async function getJoiningScore() {
    const positionDoc = firebase.firestore().collection('position').doc('kY3k3lmnCIVG3Qi6LxUZ');
    
    const docSnapshot = await positionDoc.get();
    return docSnapshot.get("currentPos");      
    
}

请注意,此函数本身是异步的。