Запрос Golang mgo возвращает только первый объект в запросе

Я пытаюсь получить список записей блога, созданных определенным пользователем, но мой запрос возвращает только первую созданную запись.

Это моя модель пользователя

 type User struct {
  Id  bson.ObjectId `bson:"_id,omitempty" json:"id"`
  Name string `json:"name"`
}

и моя модель BlogEntry

type BlogEntry struct {
  Id  bson.ObjectId  `bson:"_id,omitempty" json:"id"`
  UserId bson.ObjectId `json:"user_id"`
  Title string `json:"title"`
}

И это мой запрос на получение всех записей в блоге для определенного пользователя.

  iter := service.Collection.Find(bson.M{"user_id": bson.ObjectIdHex(id)}).Iter()

Проблема в том, что это приводит только к ПЕРВОЙ записи для пользователя с переданным идентификатором.

Я проверил данные, и они кажутся правильными, все записи имеют правильное поле user_id и так далее.

Любые идеи, почему я получаю только первую запись?

РЕДАКТИРОВАТЬ:

Полная реализация моей функции, которая запрашивает записи.

func (service *BlogEntryService) GetEntryByUserId(id string) []models.BlogEntry {

      var entries []models.BlogEntry
      iter := service.Collection.Find(bson.M{"user_id": bson.ObjectIdHex(id)}).Iter()
      result := models.BlogEntry{}
        for iter.Next(&result) {
            entries = append(entries, result)
        }
      return entries
    }

person marsrover    schedule 05.07.2016    source источник
comment
Покажите код, который вы используете для перебора записей.   -  person Cerise Limón    schedule 05.07.2016
comment
@XyMcXface Конечно, обновил пост.   -  person marsrover    schedule 05.07.2016
comment
Вызовите iter.Close() после цикла и сообщите о возвращенной ошибке, если таковая имеется. Кроме того, вы можете написать это как err := service.Collection.Find(bson.M{"user_id": bson.ObjectIdHex(id)}).Iter().All(&entries).   -  person Cerise Limón    schedule 05.07.2016
comment
@XyMcXface Спасибо за предложение, к сожалению, результат был тот же, была возвращена только одна из записей.   -  person marsrover    schedule 05.07.2016
comment
@XyMcXface Кажется, что-то не так с фактическим запросом (или сохраненными данными), если запустить запрос для какого-либо другого свойства, кроме event_id, он работает должным образом.   -  person marsrover    schedule 05.07.2016


Ответы (1)


Хорошо, я разобрался, наверное, ошибка новичка.

Я до сих пор не знаю, почему он вернул первый объект, это все еще немного странно.

Но моя ошибка заключалась в том, что я не добавил поле «user_id» как bson в модель. Итак, это:

type BlogEntry struct {
  Id  bson.ObjectId  `bson:"_id,omitempty" json:"id"`
  UserId bson.ObjectId `json:"user_id"`
  Title string `json:"title"`
}

должно было:

 type BlogEntry struct {
      Id  bson.ObjectId  `bson:"_id,omitempty" json:"id"`
      UserId bson.ObjectId `bson:"user_id" json:"user_id"`
      Title string `json:"title"`
    }

Теперь он работает так, как ожидалось!

person marsrover    schedule 05.07.2016