“utenti”(用户)集合包含每个用户的文档,该文档又包含“salvataggi”(保存)集合以保存应用内的对象。
“salvataggi”(保存)中的每个文档都有一个自动生成的 id,其中包含一系列数据(准确地说是字符串)。
“salvataggi”(保存)中的文档可以通过始终在 FIrestore 中保存从其他两个集合创建的对象来添加。
当我想通过一个按钮从 'salvataggi'(保存)集合中删除一个对象时,会随机删除一个文档,而不是与该对象对应的文档。
对象 1
final CollectionReference _usersRef =
FirebaseFirestore.instance.collection('utenti');
final User _user = FirebaseAuth.instance.currentUser;
//Add
Future _addToSaved() {
return _usersRef.doc(_user.uid).collection('salvataggi').doc().set({
'fonte': elenco.fonte,
'title': elenco.title,
'url': elenco.urlAvv,
'imageEv': elenco.urlAvv,
'p1': elenco.iconaProspettiva1,
'p1url': elenco.urlProspettiva1,
});
}
//Remove
Future _removeFromSaved() async {
CollectionReference userSaved =
_usersRef.doc(_user.uid).collection('salvataggi');
QuerySnapshot querySnap = await userSaved.get();
querySnap.docs[0].reference.delete();
}
对象 2
final CollectionReference _usersRef =
FirebaseFirestore.instance.collection('utenti');
final User _user = FirebaseAuth.instance.currentUser;
//Add
Future _addToSaved() {
return _usersRef.doc(_user.uid).collection('salvataggi').doc().set({
'fonte': widget.single.fonte,
'title': widget.single.title,
'url': widget.single.urlAvv,
'imageEv': widget.single.imageEvAvv,
'lastupdate': widget.single.dataAggiornamento,
'p1': widget.single.iconaProspettiva1,
'p1url': widget.single.urlProspettiva1,
});
}
//Remove
Future _removeFromSaved() async {
CollectionReference userSaved =
_usersRef.doc(_user.uid).collection('salvataggi');
QuerySnapshot querySnap = await userSaved.get();
querySnap.docs[0].reference.delete();
}
我做错了什么?为什么会发生这种情况?
答案 0 :(得分:1)
当用户保存文档时,请尝试用它保存该文档的 ID,以便在用户未保存该文档时。您可以将该未保存文档的 ID 传递给 firestore。
它看起来像这样
Future _removeFromSaved(String docID) async {
CollectionReference userSaved =
_usersRef.doc(_user.uid).collection('salvataggi');
await userSaved.doc(docID).delete()
}
--更新--
您可以在将文档添加到 firestore 并更新之后调用 then
方法来保存文档 id
Future _addToSaved()async {
await _usersRef.doc(_user.uid).collection('salvataggi').add({
'fonte': widget.single.fonte,
'title': widget.single.title,
'url': widget.single.urlAvv,
'imageEv': widget.single.imageEvAvv,
'lastupdate': widget.single.dataAggiornamento,
'p1': widget.single.iconaProspettiva1,
'p1url': widget.single.urlProspettiva1,
}).then(docRef=>await _usersRef.doc(_user.uid).collection('salvataggi').doc(docRef.id).update({'id':docRef.id}));
}
答案 1 :(得分:0)
querySnap.documents.first.reference.delete();
用它代替 querySnap.docs[0].reference.delete();