gpt4 book ai didi

ios - 如何在 swift 4.0 中获取 firebase-realtime-database 中的特定值

转载 作者:行者123 更新时间:2023-11-30 11:08:52 25 4
gpt4 key购买 nike

我在尝试在 swift 4.0 中获取 firebase-realtime-database 中的特定值时遇到问题

这是我想要获取的存储在变量中的值

let value = 12345678

这是我的 Firebase 数据库的样子

enter image description here

我想找到与我的变量具有相同值的 trackId,然后获取该 trackId

我花了整整一个星期的时间来解决这个问题,我似乎无法解决它,非常感谢任何帮助。

这是我到目前为止的代码

let questionPostsRef = self.ref.child("questionPosts")
let query = questionPostsRef.queryOrdered(byChild: "trackId").queryEqual(toValue: "12345678")
query.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let childSnap = child as! DataSnapshot
let dict = childSnap.value as! [String: Any]
let cat = dict["category"] as! String
let name = dict["name"] as! String
print(childSnap.key, cat, name)
}
})

最佳答案

这是标准 Firebase 查询。

要检索包含具有特定值的子节点的节点,我们在节点中查询相关节点键并指定要查找的值。它们将在快照中返回,并且它们可以多个,因此我们需要迭代每个返回的快照。

let questionPostsRef = self.ref.child("questionPosts")
let query = questionPostsRef.queryOrdered(byChild: "trackId").queryEqual(toValue: "12345678")
query.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let childSnap = child as! DataSnapshot
let dict = childSnap.value as! [String: Any]
let cat = dict["category"] as! String
let name = dict["name"] as! String
print(childSnap.key, cat, name)
}
})

输出为(假设找到两个)

-Lu9ma9jsd...  some category   some name
-K999a90k9... some category some name

Firebase 指南中对此进行了介绍:“排序和过滤”部分中的 Work With Lists Of Data

现在,问题说明

And I want find the trackId that has the same value as my variable and then get that trackId

当然,如果您已经知道 trackId,则无需获取它,因为您已经拥有它。我的猜测是您想要返回与该轨道 ID 匹配的节点,以便您可以获取其他数据,这就是上面代码的作用。如果您有不同的问题,请告诉我。

编辑:OP的后续行动。要配置 Firebase,这是 View Controller 中的典型设计模式。从那里,您可以在整个类(class)中使用 self.ref 引用您的 Firebase(如我上面的回答所示)

import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase
import FirebaseStorage

class ViewController: UIViewController {
var ref: DatabaseReference!

override func viewDidLoad() {
super.viewDidLoad()
self.ref = Database.database().reference()

关于ios - 如何在 swift 4.0 中获取 firebase-realtime-database 中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52400103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com