GAE Go - 如何将GetMulti与不存在的实体密钥一起使用?

Mat*_*w H 11 google-app-engine go google-cloud-datastore

我发现自己需要GetMulti使用一些键存在一些实体的操作,但有些实体不存在.

我下面的当前代码返回错误(datastore: no such entity).

err := datastore.GetMulti(c, keys, infos)

那我该怎么做呢?我使用"获取或插入"方法,但没有一个.

mji*_*son 15

appengine.MultiError在这种情况下,GetMulti可以返回a .循环并寻找datastore.ErrNoSuchEntity.例如:

if err := datastore.GetMulti(c, keys, dst); err != nil {
    if me, ok := err.(appengine.MultiError); ok {
        for i, merr := range me {
            if merr == datastore.ErrNoSuchEntity {
                // keys[i] is missing
            }
        }
    } else {
        return err
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果使用了类型断言,则可以缩短该块.如果我,ok:=错误.(appengine.MultiError); ok {for {...}} (2认同)
  • 是的,你也可以删除else子句,只返回错误的一行:-) (2认同)