使用 Golang 中 Google 数据存储库上的任意键数组进行查询

现在,我正在遵循上一个关于使用键/id 数组进行查询的问题的建议ids []int64。这些 ID 可能存在,也可能不存在(它们已被删除,但对其他实例的引用并未被删除)。


我尝试获取这些实例的方法如下所示:


var keys []*datastore.Key


for _, 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

另一方面,我可以单独抓住每个人,但有没有更有效的方法来解决这个问题?


饮歌长啸
浏览 163回答 1
1回答

互换的青春

您需要将错误输入到 appengine.MultiError 中。通过这种方式,您可以访问单个实体的错误。if me, ok := err.(appengine.MultiError); ok {&nbsp; &nbsp; for i, e := range me {&nbsp; &nbsp; &nbsp; &nbsp; // e != nil if entity i failed&nbsp; &nbsp; }} else {&nbsp; &nbsp;// something else went wrong (timeout, etc).}在此处查看 MultiError 的文档
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go