我有一个名为“收藏夹”的集合,我想要的是向该集合添加和删除产品。我的添加部分正在工作,但是当我使用 FieldValue.arrayRemove 时与我在添加中使用的一样,它不起作用。这可能是什么原因?
onPressed: () async {
DocumentReference ref = firestore.collection('favorites').doc(currentUser.uid);
DocumentSnapshot doc = await ref.get();
List favs = doc.data()["favs"];
if (favs.contains(widget.productId) == true) {
ref.update({
"favs": FieldValue.arrayRemove([
{
"productId": widget.productId,
"name": widget.productDetailsName,
}
])
});
} else {
ref.update({
"favs": FieldValue.arrayUnion([
{
"productId": widget.productId,
"name": widget.productDetailsName,
}
])
});
}
}
答案 0 :(得分:0)
我用 for 循环解决了它。我一一检查收藏夹中是否存在产品ID。如果是,则删除它
onPressed: () async {
DocumentReference ref =
firestore.collection('favorites').doc(currentUser.uid);
DocumentSnapshot doc = await ref.get();
List favs = doc.data()["favs"];
liked = !liked;
int count = 0;
for (int i = 0; i < favs.length; i++) {
if (favs[i]["productId"] == widget.productId) {
ref.update({
"favs": FieldValue.arrayRemove([
{
"productId": widget.productId,
"name": widget.productDetailsName,
"image": widget.productDetailsImage,
"price": widget.productDetailsPrice,
}
])
});
count = 1;
break;
}
}
if (count == 0) {
ref.update({
"favs": FieldValue.arrayUnion([
{
"productId": widget.productId,
"name": widget.productDetailsName,
"image": widget.productDetailsImage,
"price": widget.productDetailsPrice,
}
])
});
}
},