为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
largeQ 2021-06-03 13:51:45
我发现自己需要对GetMulti一些实体存在的键数组进行操作,但有些实体不存在。下面我当前的代码返回一个错误 ( datastore: no such entity)。err := datastore.GetMulti(c, keys, infos)那么我该怎么做呢?我会使用“获取或插入”方法,但没有。
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

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

    }

}


查看完整回答
反对 回复 2021-06-07
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

我知道这个话题已经有好几天了,但我喜欢发布一个替代方案,使用类型 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

  }

}


查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信