2017-02-09 11 views
2

Firebaseに接続するためにGolangとFiregoを使用しています。 Email: [email protected]で管理者を検索しようとしています。以下は、私のデータベース構造私は試してみました。このためGolangを使ってFirebaseの特定の値を検索するには?

My Firebase Database Structure

です:

dB.Child("CompanyAdmins").Child("Info").OrderBy("Email").EqualTo("[email protected]").Value(&result) 

が、それは予想される結果を生成しません。これどうやってするの?

+0

あなたの質問にJSONツリーの画像が含まれています。実際のJSONをテキストとして置き換えてください。このテキストは[Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data/)の[Export JSON]リンクをクリックすることで簡単に取得できます。 。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

答えて

3

:次に、あなたのクエリがに変わります。私は試した

全コード:

dB.Child("CompanyAdmins") 
    .OrderBy("Info/Email") 
    .EqualTo("[email protected]") 
    .Value(&result) 

更新(2017年2月10日):

f := firego.New("https://stackoverflow.firebaseio.com", nil) 

var result map[string]interface{} 

if err := f.Child("42134844/CompanyAdmins").OrderBy("Info/Email").EqualTo("[email protected]").Value(&result); err != nil { 
    log.Fatal(err) 
} 

fmt.Printf("%s\n", result) 

このプリントをあなたは上で注文するプロパティのパスを指定することができます。

マップ[-K111111:マップ[情報:マップ[電子メール:[email protected]]]]

私はデータを置く正確な場所です。

アップデート20170213

"CompanyAdmins": { 
    ".indexOn": "Info/Email" 
    } 

これはあなたのために動作しない場合は、私がテストできることを同様に完全なスニペットを提供してください:

これは私が定義した指標です。

+0

私はそれを試したが、動作していない。私は問題がクエリであると思う。 –

+0

私はちょうどコードをテストし、私の答えにスニペットを追加しました。 –

+0

@SarathSankaraKurup私は自分自身のコードを試しただけで、それは私にとってもうまくいった。あなたはこれを機能させるために管理しましたか? – zabawaba99

0

InfoデータをCompanyAdmins構造に直接入れることはできますか?このようにして、クエリが機能します。

 
CompanyAdmins 
    -id 
     -Email: "[email protected]" 
     -Settings: 
      - fields 
0

クエリの問題は、InfoCompanyAdminsの直接の子ではないということです。

値を挿入するときに自動生成されたものではなく、電子メールをキーとして使用できます。そうすれば、あなたが直接管理者にアクセスすることができます。

dB.Child("CompanyAdmins").Child("[email protected]").Child("Info")

はそうしないと、データベースを再構築する必要があります。 Rodrigo Viniciusが示唆するように、あなたの注文フィールド(電子メール)は1つ上のレベルでなければなりません。 dev.bmaxが正しく識別問題を抱えている@、解決策は単純ですが

dB.Child("CompanyAdmins").OrderBy("Email").EqualTo("[email protected]")

関連する問題