GAE Go - 如何将GetMulti与不存在的实体键一起使用? [英] GAE Go — How to use GetMulti with non-existent entity keys?

查看:96
本文介绍了GAE Go - 如何将GetMulti与不存在的实体键一起使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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

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

那么我该如何做到这一点?我会使用get或insert方法,但是没有一个。

解决方案

GetMulti可以返回一个 appengine.MultiError 在这种情况下。循环浏览并查找 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
}
}


I've found myself needing to do a GetMulti operation with an array of keys for which some entities exist, but some do not.

My current code, below, returns an error (datastore: no such entity).

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

So how can I do this? I'd use a "get or insert" method, but there isn't one.

解决方案

GetMulti can return a appengine.MultiError in this case. Loop through that and look for datastore.ErrNoSuchEntity. For example:

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

这篇关于GAE Go - 如何将GetMulti与不存在的实体键一起使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆