子を追加する02/10/2013
と Firebase に構造が作成される理由は、スラッシュによって新しいレベルが作成されるためです。
したがって、次のようなものを使用していると思われる行は、次のものとfirebaseRef.child('02/10/2013').set(true)
同等firebaseRef.child('02').child('10').child('2013').set(true)
です。
参照キー名(source)に以下の文字が使用できない不具合を回避するため、
- . (限目)
- $ (ドル記号)
- [ (左角かっこ)
- ] (右角かっこ)
- # (ハッシュまたはポンド記号)
- / (スラッシュ)
私が知る限り、Firebaseにはそのための組み込みメソッドが用意されていないため、JavaScript の組み込みエンコーディング関数の 1 つを使用できます。ここでは、私たちの目的に最も効果的なものを確認するための概要を示します。
var forbiddenChars = '.$[]#/'; //contains the forbidden characters
escape(forbiddenChars); //results in ".%24%5B%5D%23/"
encodeURI(forbiddenChars); //results in ".%24%5B%5D%23%2F"
encodeURIComponent(forbiddenChars); //results in ".%24%5B%5D%23%2F"
明らかに、最も効果的なソリューションはencodeURIComponent
. しかし、それですべての問題が解決するわけではありません。上記.
のテストで示されているように、キャラクターはまだ問題を引き起こし、encodeURIComponent
テスト用の電子メール アドレスを試しています。私の提案はencodeURIComponent
、ピリオドに対処するために、後に置換関数をチェーンすることです。
2 つの例の場合、ソリューションは次のようになります。
encodeURIComponent('Henry.Morgan@caribbean.sea').replace(/\./g, '%2E') //results in "Henry%2EMorgan%40caribbean%2Esea"
encodeURIComponent('02/10/2013'); //results in "02%2F10%2F2013"
どちらの最終結果もキー名として Firebase に安全に挿入できるため、Firebase から読み取った後にデコードすることだけが懸念事項でreplace('%2E', '.')
あり、単純なdecodeURIComponent(...)
.