dart 在firestore中添加和删除项目时切换收藏夹按钮

elcex8rz  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(105)

我想用firestore切换收藏夹按钮。当我最初点击它时,我想把它添加到一个集合中,然后再次点击应该会从集合中删除该项目。我的问题是,我可以通过将文档名称设置为标题来实现这一点,然后使用标题引用来简单地删除。这在以后会有一个问题,因为两个产品在技术上可以有相同的名称。这就是为什么我想使用id有一个引用名称,因为它是动态的。这是下面的代码。

try {
              if (widget.product['isFavourited'] == true) {
                String docId = widget.product.id;
                // print(docId.toString());
                // print(widget.product['isFavourited'].toString());
                await FirebaseFirestore.instance
                    .collection('Products')
                    .doc(docId)
                    .update({'isFavourited': false}).then((value) async {
                  final CollectionReference collectionReference =
                      FirebaseFirestore.instance
                          .collection('Users')
                          .doc(uid)
                          .collection('Favourites');
                  await collectionReference
                      .doc()
                      .delete();
                  print('');
                });
              } else {
                String docId = widget.product.id;
                await FirebaseFirestore.instance
                    .collection('Products')
                    .doc(docId)
                    .update({'isFavourited': true}).then((value) async {
                  final CollectionReference collectionReference =
                      FirebaseFirestore.instance
                          .collection('Users')
                          .doc(uid)
                          .collection('Favourites');
                          final String id = collectionReference.doc().id;
                  final String itemtodelete = collectionReference.doc(id).id;
                  print(itemtodelete);
                  print(id);
                  await collectionReference.doc(itemtodelete).set({
                    'id': itemtodelete,
                    'title': widget.product['title'],
                    'price': widget.product['price'],
                    'about': widget.product['about'],
                    'description': widget.product['description'],
                    'imagepath': widget.product['imagepath'],
                    'isFavourited': widget.product['isFavourited'],
                    'isCarted': widget.product['isCarted'],
                  });
                });
5vf7fwbs

5vf7fwbs1#

试一试,希望这会有帮助。
一个月一个月一个月一个月一个月一个月一个月一个月一个月二个月一个月

Future<void> addToFavorite(String productId, String uid, favoriteId) async {

final productCollection = FirebaseFirestore.instance.collection("Products");
final favoriteCollection = FirebaseFirestore.instance.collection("Users").doc(uid).collection("Favorites");

final productDocReference = await productCollection.doc(productId).get();

if (productDocReference.exists) {
  
  final favoriteDocReference = favoriteCollection.doc(favoriteId).get().then((favoriteDoc) {

    if (!favoriteDoc.exists) {
      favoriteCollection.doc(favoriteId).set({
                'id': favoriteId,
                'title': widget.product['title'],
                'price': widget.product['price'],
                'about': widget.product['about'],
                'description': widget.product['description'],
                'imagepath': widget.product['imagepath'],
                'isFavourited': widget.product['isFavourited'],
                'isCarted': widget.product['isCarted'],}).then((value){
        productCollection.doc(productId).update({
          "isFavourited": true
        });
      });

    } else {
      favoriteCollection.doc(favoriteId).delete().then((value) {
        productCollection.doc(productId).update({
          "isFavourited": false
        });
      });
    }
  });
}

}

相关问题