查询Firebase数据库Swift

时间:2019-03-06 15:45:04

标签: json swift database firebase firebase-realtime-database

我一直在尝试为数据库创建一些查询,但是没有成功。这是第一次在Firebase中处理查询并感到有些困惑。

我使用实时数据库

我的数据库如下:

-> users
    ->profile
        ->uid1
            ->email : "some@email.com"
            ->name : "some_name"
            ->favourite
               ->id1
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id1"
               ->id2
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id2"
        ->uid2
            ->email : "some@email.com"
            ->name : "some_name"
            ->favourite
               ->id1
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id1"
               ->id2
                   ->title : "some_title"
                   ->date : "some_date"
                   ->id : "id2"

我一直在尝试的查询:

  • 检查数据库中是否已存在特定的uid。
  • 检查数据库中是否已存在来自某个收藏夹中的特定ID的已知uid。

有什么想法如何执行这些查询吗?

1 个答案:

答案 0 :(得分:0)

取决于您使用的是实时数据库还是Firestore。但是因为您想查询,所以我建议使用Firestore,您可以通过以下方式实现它:

 // Create a path where you want the query to search
 let storageReference = Firestore.firestore().collection("users/profile")

 let query = storageReference.whereField("uid", isEqualTo: givenUID )
        query.getDocuments { (snapshot, error) in
            if let snapshot = snapshot {
                for document in snapshot.documents {
                    let data = document.data()
                }
            }
        }

在实时数据库中,您不能使用查询,但是可以像这样实现查询并查看文档是否可用:

let databaseRef = Database.database().reference(withPath: "users/profile/givenUID")

databaseRef.observeSingleEvent(of: .value, with: { (snapshot) in

        if snapshot.exists() {
            // UID is in the database
        } else {
            // UID not found
        }
})

然后按照收藏夹的参考进行操作!