Reputation: 85
i need help with Firestore. I have a database with a collection of Clients that have some documents named by ID (1, 2, 3..)
I want a function that count the number of documents of the collection and create a new document with the value+1 (eg: the last document was 6 and i want a new document 7).
This is what i have done but i don't know why it doesn't work:
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;
}
This is the output that i get:
What i do wrong? How can i do it?
Thank you
Upvotes: 1
Views: 462
Reputation: 317760
Your function getID
doesn't actually return the count. It returns a promise that eventually resolves with the count. Since it is async, you will need to await
its result to get the value.
const size = await getID('Clients');
getID
is also too complicated - you should not mix await
with then
. You can simplify it greatly.
async function getID(){
const snapshot = await firebase.firestore().collection('Clients').get()
return snapshot.size;
}
Upvotes: 2