2013-03-06 23 views
10

我发现自己需要做一个GetMulti操作与键数组,其中一些实体存在,但有些不。GAE Go - 如何将GetMulti与不存在的实体键一起使用?

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

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

所以,我该怎么办呢?我会使用“获取或插入”方法,但没有一个。

回答

15

在这种情况下,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 
    } 
} 
+2

如果您使用类型断言,则可以缩短该块。如果我,确定:=错误(appengine.MultiError);好的{for {...}} – 2013-03-07 01:23:39

+0

谢谢。这是你的意思吗? – mjibson 2013-03-07 01:42:17

+2

是的,你可以放弃else子句,只是返回err为少一行:-) – 2013-03-07 04:09:13

相关问题