我需要有关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;
}
这是我得到的输出:
我做错了什么?我该怎么办?
谢谢
答案 0 :(得分:2)
您的函数getID
实际上并未返回计数。它返回一个最终会随着计数解决的承诺。由于它是异步的,因此您需要await
其结果来获取值。
const size = await getID('Clients');
getID
也太复杂-您不应将await
与then
混合使用。您可以大大简化它。
async function getID(){
const snapshot = await firebase.firestore().collection('Clients').get()
return snapshot.size;
}