2017-02-09 4 views
2

Я использую Golang и Firego для подключения к Firebase. Я пытаюсь найти администратора с Email: [email protected]. Ниже моя структура базы данныхКак найти определенное значение в Firebase с помощью Golang?

My Firebase Database Structure

Для этого я попробовал:

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

но это не дает ожидаемого результата. Как я могу это сделать?

+0

Вы включили изображение вашего дерева JSON в свой вопрос. Пожалуйста, замените это на фактический JSON как текст, который вы можете легко получить, щелкнув ссылку Экспорт JSON в [вашей консоли базы данных Firebase] (https://console.firebase.google.com/project/_/database/data/) , Наличие JSON в качестве текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь. –

ответ

3

Хотя @ dev.bmax имеет проблемы, выявленные правильно, решение проще. Вы можете указать путь свойства заказа на:

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

Update (2017-02-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: карта [Info: Карта [E-mail: [email protected]]]]

Какое точное место я поместил данные.

Update 20170213:

Это индекс я определил:

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

Если это не работает для вас, пожалуйста, предоставьте так же полный фрагмент кода, который я могу проверить.

+0

Я пробовал, но не работал. Я думаю, проблема связана с запросом. –

+0

Я только что проверил код и добавил фрагмент к моему ответу. –

+0

@SarathSankaraKurup Я просто попробовал код над собой, и это сработало и для меня. Вам удалось заставить это работать? – zabawaba99

0

Можете ли вы поместить данные Info непосредственно в структуру CompanyAdmins? Таким образом, ваш запрос будет работать.

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

Проблема с запросом, является то, что Info не является прямым потомком CompanyAdmins.

Если вы вставляете значения, вы можете использовать электронную почту как ключ, а не автоматически сгенерированный. Таким образом, вы можете получить доступ к администратору непосредственно:

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

В противном случае, вам необходимо перестроить базу данных. Ваше поле для заказа (электронная почта) должно быть на один уровень выше, как предлагает Родриго Виниций. Затем, ваш запрос изменится:

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

Смежные вопросы