10
我发现自己需要做一个GetMulti
操作与键数组,其中一些实体存在,但有些不。GAE Go - 如何将GetMulti与不存在的实体键一起使用?
我的当前代码如下,返回一个错误(datastore: no such entity
)。
err := datastore.GetMulti(c, keys, infos)
所以,我该怎么办呢?我会使用“获取或插入”方法,但没有一个。
我发现自己需要做一个GetMulti
操作与键数组,其中一些实体存在,但有些不。GAE Go - 如何将GetMulti与不存在的实体键一起使用?
我的当前代码如下,返回一个错误(datastore: no such entity
)。
err := datastore.GetMulti(c, keys, infos)
所以,我该怎么办呢?我会使用“获取或插入”方法,但没有一个。
在这种情况下,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
}
}
如果您使用类型断言,则可以缩短该块。如果我,确定:=错误(appengine.MultiError);好的{for {...}} – 2013-03-07 01:23:39
谢谢。这是你的意思吗? – mjibson 2013-03-07 01:42:17
是的,你可以放弃else子句,只是返回err为少一行:-) – 2013-03-07 04:09:13