1
我試圖獲取某個用戶創作的博客條目列表,但我的查詢只返回創建的第一個條目。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()
問題是查詢,這隻會導致帶有傳入ID的用戶的第一個條目。
我檢查了數據,看起來是正確的,所有條目都有一個正確的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
}
顯示您用來遍歷條目的代碼。 –
@XyMcXface當然,更新了這篇文章。 – marsrover
在循環之後調用iter.Close()並報告返回的錯誤(如果有的話)。另外,你可以把它寫成'err:= service.Collection.Find(bson.M {「user_id」:bson.ObjectIdHex(id)})。Iter()。All(&entries)'。 –