【问题标题】:Querying with an array of arbitrary keys on Google datastore in Golang在 Golang 中使用 Google 数据存储上的任意键数组进行查询
【发布时间】:2015-03-27 16:42:55
【问题描述】:

这个问题的延续:

Doing a "IN Array" query on google app engine datastore with golang

现在,我正在遵循上一个问题中关于使用键/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

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

【问题讨论】:

    标签: google-app-engine go google-cloud-datastore


    【解决方案1】:

    您需要向 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 here 的文档

    【讨论】:

    猜你喜欢
    • 2014-12-13
    • 2015-05-25
    • 2013-12-07
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    相关资源
    最近更新 更多