【问题标题】:How to get last Firestore ID document如何获取最后一个 Firestore ID 文档
【发布时间】:2020-10-21 17:29:29
【问题描述】:

我需要 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;
}
  

这是我得到的输出:

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    您的函数getID 实际上并没有返回计数。它返回一个最终通过计数解决的承诺。由于它是异步的,因此您需要 await 其结果才能获取值。

      const size = await getID('Clients');
    

    getID 也太复杂了——你不应该把awaitthen 混在一起。你可以大大简化它。

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

    【讨论】:

    • 成功了,非常感谢!我能问你另一件事吗?我总是收到警告“长时间设置计时器..”,我该如何避免呢?
    • 如果您有新问题,请单独发布该问题,并说明什么不符合您的预期。
    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 2018-09-03
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多