我正在尝试更新Firestore集合中最后一个文档中的字段。我的更新方法如下:
updateHours() {
return usersRef.doc(firebaseAuth.currentUser!.uid).collection('posts')
.orderBy('datePublished', descending: true)
.limit(1).get().then((querySnapshot) {
return querySnapshot.docs.map((e) {
usersRef
.doc(firebaseAuth.currentUser!.uid).collection('posts')
.doc(e.reference.id)
.update({"totalTime": FieldValue.increment(1)});
});
});
}
这不起作用。如果我使用.forEach((,那么所有文档都会更新。那么,如何只更新最后一个文档字段呢?
要更新最后一个文档中的totalTime
字段,请使用以下代码行:
void updateHours() async{
CollectionReference postsRef = usersRef
.doc(firebaseAuth.currentUser!.uid)
.collection('posts');
QuerySnapshot query = await postsRef.orderBy('datePublished', descending: true)
.limit(1)
.getDocuments();
query.documents.forEach((doc) {
doc.reference.updateData({"totalTime": FieldValue.increment(1)});
});
}
不要忘记,FirebaseAPI是异步的,您需要等待数据,直到它可用。