GAE Go — 如何将 GetMulti 与不存在的实体键一起使用?

我发现自己需要对GetMulti一些实体存在的键数组进行操作,但有些实体不存在。

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

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

那么我该怎么做呢?我会使用“获取或插入”方法,但没有。


largeQ
浏览 181回答 2
2回答

炎炎设计

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    }}

慕码人8056858

我知道这个话题已经有好几天了,但我喜欢发布一个替代方案,使用类型 switch。if err := datastore.GetMulti(c, keys, dst); err != nil {  switch errt := err.(type) {  case appengine.MultiError:    for ix, e := range errt {      if e == datastore.ErrNoSuchEntity {        // keys[ix] not found      } else if e != nil {        // keys[ix] have error "e"      }    }  default:    // datastore returned an error that is not a multi-error  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go