首页 > 解决方案 > Firebase 数据库:如果子对象具有特定值,则检索节点

问题描述

我正在使用 Firebase 在 iOS 中开发应用程序。想知道我是否可以在节点中获取数据,如果子对象具有特定值?

例如,下面是我的数据库结构: 如果我获取数据,它会获取节点内的所有数据。但是,我的应用程序解决方案要求我仅在为 false 时才显示此节点。如果为真,则不会显示。在此处输入图像描述
LEREDrwBDM952MpVtUEmonitoredmonitored

我的代码:

refChilds = Database.database().reference()
    let userId: String = (Auth.auth().currentUser?.uid)!

    //observing the data changes
   refChilds.child("childId").child(userId).child("uid").queryOrdered(byChild: "monitored").queryEqual(toValue: "false").observe(DataEventType.value, with: { (snapshot) in

使用上面的代码,我注意到能够获取任何东西。这是获取数据的正确方法吗?

编辑:
除了我的问题,我想知道现在如何将 childvaluemonitored从 false 更新为 true?我在访问第二个子节点时遇到问题LEREDrwBDM952MpVtUE。我的代码在下面创建了一个新节点TGEcwrz..

这是我的代码。

refChild.child("childId").child(userId).updateChildValues(["monitored":monitored!])

标签: swiftfirebase-realtime-database

解决方案


您的代码中有一段uid不在 JSON 中。从我看到的查询应该是:

refChilds.child("childId").child(userId).queryOrdered(byChild: "monitored").queryEqual(toValue: false).observe(DataEventType.value, with: { (snapshot) in

推荐阅读