2016-10-10 7 views
0

У меня возникла следующая проблема .. Я не могу получить все записи из моей базы данных mongo (работает в контейнере для докеров), вот моя правда простой код:mgo collection.Find (nil) .All (& users) не работает

type User struct { 
    Email string `json:"email" bson:"email"` 
    Pass string `json:"pass" bson:"pass"` 
} 

session := dbConnect() 
collection := session.DB("my_db").C("users") 
var users []User 
err := collection.Find(nil).All(&users) 
if err != nil { 
    log.Fatal("Mongo collection find fail: ", err) 
} 
fmt.Println("Results >> ", err) 

Вещь «err» возвращает <nil>. Что-то странное в том, что вставка документов в базу данных действительно работает. Спасибо!

+2

Что 'fmt.Println («Пользователи >>», пользователи)' печать? –

+0

Он печатает «' '" –

+0

колодец - это нулевое значение для пустого среза, и ошибок нет, поэтому кажется, что ваши пользователи коллекции пустые –

ответ

1

Нет проблем с кодом, но последняя строка fmt.Println("Results >> ", err), разве это не должно быть fmt.Println("Results >> ", users)?

Также вы можете проверить, если коллекция не пуста и поля корректны с использованием интерфейса

session := dbConnect() 
    collection := session.DB("my_db").C("users") 
    var v []interface{} 
    err := collection.Find(nil).All(&v) 
    if err != nil { 
     log.Fatal("Mongo collection find fail: ", err) 
    } 
    fmt.Println("Results >> ", v) 
+0

Вы правы, спасибо. Я просто привык к указателям и ссылкам в Go. –