现在,我正在遵循上一个关于使用键/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 关注
- 162 浏览
添加回答
举报
0/150
提交
取消