ios - 如何在 Firebase 中侦听和检查特定元素的值?
问题描述
我有一些带有机械备件的简单应用程序。我有一个购物车。我想用户将所需的零件添加到他的购物车中,但如果它已经在购物车中,则需要将基本计数更改为 +1。
这是我的 Firebase 结构:
func addToFirebaseWatchList(object: ObjectFromPartsCatalogueList, user: FirebaseAuth.User){
self.ref.child("users").child(user.uid).updateChildValues(["userEmail": "\(user.email!)"])
self.ref.child("users").child(user.uid).child("order").child("\(object.objectFromPartsCatalogueListCode!)").updateChildValues(["count" : "1"])
}
如何检查购物车是否已包含具有相同编号的备件并简单地更新计数?
解决方案
如果节点的新值取决于其现有值,您可以使用事务或执行原子增量。在这里,我建议使用原子增量,但这确实意味着您必须将计数存储为数值(您当前将其作为字符串存储)。
将其存储为数值后,将其递增很简单:
self.ref.child("users").child(user.uid).child("order")
.child("\(object.objectFromPartsCatalogueListCode!)")
.updateChildValues(["count" :ServerValue.increment(1) ])
如果该属性尚不存在,则上面将其设置为1
. 但是如果你已经有一个非数字值,它就行不通了。因此,只要您愿意擦除现有的字符串count
值,就应该一切都好。
我实际上会摆脱"count"
那里的财产,然后做:
self.ref.child("users").child(user.uid).child("order")
.child("\(object.objectFromPartsCatalogueListCode!)")
.setValue(ServerValue.increment(1))
推荐阅读
- javascript - 如何过滤掉包含最多另一个数字的数字的div?
- elasticsearch - logstash 无法将类型完成解析为数字
- c - 链表 - Free() 节点导致程序崩溃
- c# - 创建基于内容缩放的 UWP 语音气泡控件
- python - 如何在python中导入文件?
- java - Spring Boot 中 @Scheduled 的动态配置
- python - 编写数据刮板的问题
- javascript - React js中的按钮数组
- python - Python 3.6 字符串输入
- codeigniter - 我在 codeigniter 中以三种方式检索表单输入?哪一个是正确的方式