# #firebase #go #firebase-realtime-database
#firebase #Вперед #firebase-база данных в реальном времени
Вопрос:
У меня есть база данных firebase, подобная приведенной ниже:
и я хотел бы выбрать все события, которые происходят после определенной даты. Я попытался сделать это с помощью следующего кода:
events := []data.EventData{}
if err := ref.Child("date").OrderByValue().StartAt(time.Now()).Get(c, events); err != nil {
fmt.Println("Error selecing upcoming events")
fmt.Println("Error:", err)
response.Message = "Problem getting upcoming events"
c.JSON(http.StatusInternalServerError, response)
return
}
Но он продолжает выдавать ошибку:
Индекс не определен, добавьте «.indexOn»: «.value», для пути «/ Событие / дата», к правилам
Что это значит и как мне выбрать нужные мне записи? Я на правильном пути и мне просто нужно устранить эту ошибку или мне следует использовать другой подход?
Ответ №1:
Firebase просит вас добавить индекс в date
для повышения производительности запроса. AFAIK, вы можете получить нужные вам данные без добавления какого-либо индекса. Но это будет довольно медленно по мере роста ваших event
данных. проверьте ссылку для справки:https://firebase.google.com/docs/database/security/indexing-data
Комментарии:
1. Но это возвращает ошибку, когда я пытаюсь получить свои записи, так что это означает, что это больше, чем предложение, верно?
2. есть ли какие-либо данные в вашем
events
фрагменте? @AbeMiessler3. Нет, это пустое. Может ли быть проблема с моим запросом, из-за которой он не возвращает результатов? Похоже, вы почти уверены, что у этого должны быть результаты, даже если это выдает ошибку?
4. @AbeMiessler, похоже, firebase не просто предлагает, индекс необходим. firebase.google.com/docs/firestore/query-data/indexing . код здесь github.com/firebase/firebase-admin-go/blob/master/db / … .