【问题标题】:Query Firebase Database Swift查询 Firebase 数据库 Swift
【发布时间】:2019-07-28 08:21:22
【问题描述】:

我一直在尝试为我的数据库创建一些查询,但没有成功。这是第一次在 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 处。

任何想法如何执行这些查询?

【问题讨论】:

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


    【解决方案1】:

    取决于您使用的是实时数据库还是 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
            }
    })
    

    然后对收藏夹做同样的事情!

    【讨论】:

    • 我用的是实时数据库
    • 我更新了答案!如果这对您有用,请检查答案是否有效:)
    猜你喜欢
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2020-10-16
    • 2017-04-25
    • 2017-08-16
    • 1970-01-01
    相关资源
    最近更新 更多