2016-09-28 9 views

答えて

2

特定の値がリストに存在するかどうかを照会することはできません。これは、Firebaseのドキュメントでデータベース内の配列を使用することを推奨している理由の1つです。

しかし、この場合(そして私が遭遇するほとんどの場合)、実際に配列が必要ない可能性があります。ユーザーが選んだ色を気にしているとします。

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

ええと、私はまだKSmJZ ... A5Iのすべての子オブジェクトを取得することができます。これは、ユーザーが特定の16進色をクエリすると、この特定の親に格納されている5色のパレット全体を取得するようになります。 –

+0

ええ、最高のデータ構造は、それをどのように使いたいかによって決まります。だから、私がやったところでタイピングをやめたのです。あなたは、あなたのアプリのユースケースを可能にする方法でデータを保存する必要があります。多くの場合、同じデータを複数回保存する必要があります。はじめに[NoSQLデータモデリング](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)を読んでください。 –

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ヘクスのいずれかをターゲットにすると、アレイ全体が戻ってきます。

関連する問題