in golang/go-guestbook/src/backend/mongodb.go [17:42]
func (m *mongodb) entries(ctx context.Context) ([]guestbookEntry, error) {
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
col := m.conn.Database("guestbook").Collection("entries")
cur, err := col.Find(ctx, bson.D{}, &options.FindOptions{
Sort: map[string]interface{}{"_id": -1},
})
if err != nil {
return nil, fmt.Errorf("mongodb.Find failed: %+v", err)
}
defer cur.Close(ctx)
var out []guestbookEntry
for cur.Next(ctx) {
var v guestbookEntry
if err := cur.Decode(&v); err != nil {
return nil, fmt.Errorf("decoding mongodb record failed: %+v", err)
}
out = append(out, v)
}
if err := cur.Err(); err != nil {
return nil, fmt.Errorf("failed to iterate on mongodb cursor: %+v", err)
}
return out, nil
}