Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取最后一个Firestore ID文档_Javascript_Firebase_React Native_Google Cloud Firestore - Fatal编程技术网

Javascript 如何获取最后一个Firestore ID文档

Javascript 如何获取最后一个Firestore ID文档,javascript,firebase,react-native,google-cloud-firestore,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();

我需要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;
}
  
异步函数pushName(名称、姓氏){
const size=getID('Clients');
const newID=(大小+1).toString();
const docRef=firebase.firestore().collection('Clients').doc(newID);
等待docRef.set({
名字:名字,
姓:姓,,
});
返回(
名称:{name}
姓:{姓}
大小:{size}
newID:{newID}
);
}
异步函数getID(){
const snapshot=wait firebase.firestore().collection('Clients').get().then(函数(querySnapshot){
快照=querySnapshot.size;
});
返回快照;
}
这是我得到的输出:

我做错了什么?我怎么做


谢谢

您的函数
getID
实际上并没有返回计数。它返回一个最终与计数解决的承诺。由于它是异步的,您需要等待它的结果以获得值

  const size = await getID('Clients');
getID
也太复杂了-你不应该把
wait
then
混在一起。你可以大大简化它

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

很有效,非常感谢!我能问你另一件事吗?我总是收到警告“设置一个长时间的计时器…”,我如何避免它?如果你有新的问题,请单独发布,并解释什么没有按你期望的方式工作。