随机生成的密钥

时间:2016-09-28 20:16:50

标签: ios swift firebase firebase-realtime-database

我想从颜色十六进制代码数组中查询特定的子代。

以下是我的数据库结构的快照:

enter image description here

如何查询特定的十六进制代码并获取其父对象的整个数组?

2 个答案:

答案 0 :(得分:2)

您无法查询列表中是否存在特定值。这是Firebase文档建议不要在数据库中使用数组的众多原因之一。

但在这种情况下(我遇到的大多数情况),你可能不太需要一个阵列。假设您只关心用户选择的颜色。在这种情况下,您可以更有效地将颜色存储为设置

palettes
    -KSmJZ....A5I
        "0x474A39": true
        "0xbA9A7C": true
        "0xDEDEDF": true
        "0x141414": true
        "0x323E35": true

答案 1 :(得分:1)

我以不同的方式做到了,

创建了一个执行此操作的功能:

let databaseRef = FIRDatabase.database().reference()
        let HEX1 = hex1.text! as String
        let HEX2 = hex2.text! as String
        let HEX3 = hex3.text! as String
        let HEX4 = hex4.text! as String
        let HEX5 = hex5.text! as String
        let URL = url.text! as String

        // First set
        let colorArray1 = [HEX2, HEX3, HEX4, HEX5, URL]
        databaseRef.child("palette").child(HEX1).setValue(colorArray1)

        // second set 
        let colorArray2 = [HEX1, HEX3, HEX4, HEX5, URL]
        databaseRef.child("palette").child(HEX2).setValue(colorArray2)

        // third set
        let colorArray3 = [HEX1, HEX2, HEX4, HEX5, URL]
        databaseRef.child("palette").child(HEX3).setValue(colorArray3)

        // fourth set
        let colorArray4 = [HEX1, HEX2, HEX3, HEX5, URL]
        databaseRef.child("palette").child(HEX4).setValue(colorArray4)

        // fifth set
        let colorArray5 = [HEX1, HEX2, HEX3, HEX4, URL]
        databaseRef.child("palette").child(HEX5).setValue(colorArray5)

这样当我瞄准5个六角形中的任何一个时,它会将整个阵列带回来。