首页 > 解决方案 > 如果收藏夹部分中不存在新产品的 ID,我想向 firebase 添加新产品

问题描述

我正在制作一个商店应用程序,我希望每个帐户都有自己喜欢的产品,所以我试图将用户添加到收藏夹的产品添加到“Firebase”中的个人资料部分,并且可以将案例从收藏修改为不是,但问题是我只想在该部分中不存在 id 时添加产品。

但它会复制记录并对其进行修改,而不仅仅是添加或修改

这是代码:

Future<void> testFavourite(String id,uid) async {
    final url = 'https://test.firebaseio.com/profiles/.json';
    final response = await http.get(Uri.parse(url));
    final profileData = jsonDecode(response.body) as Map<String,dynamic>;
    String profile;
    profileData.forEach((key, value) async {
      if(value['uid'] == uid){
        profile = key;
        final profileUrl = 'https://test.firebaseio.com/profiles/$profile/favProducts.json';
        if(value['favProducts'] == null){
          await http.post(Uri.parse(profileUrl),body: jsonEncode({
              'id' : id,
              'isFavorite' : true,
          }));
        }
        if(value['favProducts'] != null){
         final response = await http.get(Uri.parse(profileUrl));
         final favProducts = jsonDecode(response.body) as Map<String,dynamic>;
         favProducts.forEach((key,product) async{
           if(product['id'] == id){
             final productUrl = 'https://test.firebaseio.com'
                 '/profiles/$profile/favProducts/$key.json';
             await http.patch(Uri.parse(productUrl),body: jsonEncode({
               'isFavorite' : !product['isFavorite']
             }));
           }
           if(product['id'] != id){
            
            await http.post(Uri.parse(productUrl),body: jsonEncode({
               'id' : id,
               'isFavorite' : true,
             }));
           }
         });
        }
      }
    });
  }

这里是火力基地

标签: firebaseflutterdartfirebase-realtime-database

解决方案


推荐阅读