現在,我正在遵循上一個關于使用鍵/id 數組進行查詢的問題的建議ids []int64。這些 ID 可能存在,也可能不存在(它們已被刪除,但對其他實例的引用并未被刪除)。我嘗試獲取這些實例的方法如下所示:var keys []*datastore.Keyfor _, id := range ids { keys = append(keys, datastore.NewKey(c, "Category", "", id, nil))}categories := make([]Category, len(keys))err := datastore.GetMulti(c, keys, categories)if err != nil { return nil, err}for i := 0; i < len(categories); i++ { categories[i].Id = keys[i].IntID()}但是,它錯誤地拋出我:datastore: no such entity另一方面,我可以單獨抓住每個人,但有沒有更有效的方法來解決這個問題?
1 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
您需要將錯誤輸入到 appengine.MultiError 中。通過這種方式,您可以訪問單個實體的錯誤。
if me, ok := err.(appengine.MultiError); ok {
for i, e := range me {
// e != nil if entity i failed
}
} else {
// something else went wrong (timeout, etc).
}
在此處查看 MultiError 的文檔
- 1 回答
- 0 關注
- 178 瀏覽
添加回答
舉報
0/150
提交
取消