如何获取最后的Firestore ID文档

时间:2020-10-21 17:29:29

标签: javascript firebase react-native google-cloud-firestore

我需要有关Firestore的帮助。我有一个包含客户集合的数据库,其中有一些用ID(1、2、3 ..)命名的文档

我想要一个计算集合文档数量并创建值为+1的新文档的函数(例如:最后一个文档是6,而我想要一个新文档7)。

这是我所做的,但我不知道为什么它不起作用:

async function pushName(name, surname) {
  const size = getID('Clients');
  const newID = (size + 1).toString();
  const docRef = firebase.firestore().collection('Clients').doc(newID);
  await docRef.set({
    FirstName: name,
    LastName: surname,
  });
  return(
    <View>
      <Text>name: {name}  </Text>
      <Text>surname: {surname}  </Text>
      <Text>size: {size}  </Text>
      <Text>newID: {newID}  </Text>
    </View>
  );
}

async function getID(){
  
  const snapshot = await firebase.firestore().collection('Clients').get().then(function(querySnapshot) {      
    snapshot = querySnapshot.size; 
});
  return snapshot;
}
  

这是我得到的输出:

enter image description here

我做错了什么?我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:2)

您的函数getID实际上并未返回计数。它返回一个最终会随着计数解决的承诺。由于它是异步的,因此您需要await其结果来获取值。

  const size = await getID('Clients');

getID也太复杂-您不应将awaitthen混合使用。您可以大大简化它。

async function getID(){  
  const snapshot = await firebase.firestore().collection('Clients').get()
  return snapshot.size;
}