gpt4 book ai didi

ios - Firebase - iOS SDK - 按子值过滤

转载 作者:搜寻专家 更新时间:2023-10-31 08:20:02 26 4
gpt4 key购买 nike

我正在尝试使用 Firebase 来设置一个新项目,但我正在努力处理非关系数据库和查询系统。我已阅读指南,尤其是有关数据结构的指南。这是我的用例:我必须处理一些产品,每个产品都有一个名字和一个家庭,这个也是一个实体。我创建了以下结构,试图遵循指南和示例。

{
"families" : [ {
"name" : "easy",
"products" : [ 10, 11 ]
}, {
"name" : "ir33",
"products" : [ 12, 13 ]
} ],
"products" : {
"10" : {
"family" : 0,
"name" : "Matita"
},
"11" : {
"family" : 0,
"name" : "Penna"
},
"12" : {
"family" : 1,
"name" : "Gomma"
}
}
}

给定一个家庭,我想选择那个家庭的所有产品。我的第一个解决方案是访问家庭,检索 ID 数组,然后执行请求(每个 ID 一个)。它有效,但这种方法可能会导致大量请求。有没有更好的方法来获得它?例如,我正在尝试使用这个但它不起作用:

ref.child("products").queryOrderedByChild("family").queryEqualToValue("0", childKey: "family").observeSingleEventOfType(.Value, withBlock: { snap in
print("snap \(snap)")
})

但它总是打印 Snap (products) <null> .

更新

我可以通过以下查询访问给定系列的产品:

ref.child("products").queryOrderedByChild("family").queryEqualToValue(0).observeSingleEventOfType

顺便说一句,现在我在运行测试时收到此警告:

[FirebaseDatabase] Using an unspecified index. Consider adding ".indexOn": "family" at /products to your security rules for better performance

预先感谢您的帮助!

最佳答案

这个怎么样:

ref.queryOrderedByChild("family").queryEqualToValue(0).observeSingleEventOfType(.Value, with: { snap in  
print("snap \(snap)")
})

关于问题更新的更新:

将此添加到 firebase 控制台中的数据库规则(另请参见屏幕截图)。不要忘记点击“发布”按钮:

"products": {
".indexOn": "family"
}

enter image description here

关于ios - Firebase - iOS SDK - 按子值过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875133/

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