firebase - 如果收藏夹部分中不存在新产品的 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,
}));
}
});
}
}
});
}
解决方案
推荐阅读
- c++ - OpenGL:如何实现相机后视图
- amazon-web-services - AWS Cli:如何将错误捕获到变量而不是在控制台中打印
- python - 如何纠正 replace() 中出现的这个问题?Python
- android - 我的 android xml 代码没有正确显示两个文本
- c# - 如何在 Gmail API 中获取整个电子邮件文本/正文/内容?C#
- gremlin - Tinkerpop Gremlin Get Edges that go to vertices within a list
- powershell - 带有计时器的 Powershell 弹出消息
- javascript - How to make a hole in a polygon with CreateJs?
- linux - How to get/set Bluetooth MTU value in Linux with command line tool (hciconfig/bluetoothctl)
- azure-analysis-services - How to get list of roles and members in an Azure Analysis service via Powershell