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

如何忽略datastore.Query.GetAll()中的错误?

如何忽略datastore.Query.GetAll()中的错误?

Go
慕娘9325324 2021-05-07 17:48:52
我刚刚开始使用Go运行时开发GAE应用程序,到目前为止,这是我的荣幸。但是,我遇到了以下挫折:通过利用具有相同实体名称(“项目”)保存的具有不同属性的多个不同结构,我利用了数据存储区提供的灵活性。在围棋的语言数据存储的参考指出:“实际类型通过没有获取和放置通话之间,甚至在不同的应用程序引擎的要求相匹配”,因为实体实际上只是一系列属性,因此可以存储在适当的容器可以支持他们的类型。我需要查询存储在实体名称“ Item”下的所有实体,并将它们全部一次编码为JSON。使用实体属性的灵活性,我的优势,它可以存储查询实体为任意的datastore.PropertyList,但是,Get和GetAll函数返回ErrFieldMismatch当被查询实体的属性不能恰当的表示(即,不兼容的类型,或错误只是一个缺失的值)。我要保存的所有这些结构都是用户生成的,大多数值是可选的,因此将空值保存到数据存储区中。将这些结构保存为空值没有问题(再次具有数据存储的灵活性),但是在检索它们时也存在问题。在数据存储区Go文档中还指出,由Get方法的调用者决定由于空值而返回的错误是可忽略的,可恢复的还是致命的。我想知道如何正确执行此操作,因为仅忽略错误是不够的,因为datastore.PropertyList当查询导致此错误时,查询的目标结构()根本不会被填充。预先谢谢您,对于冗长的问题,我们深表歉意。更新:这是一些代码query := datastore.NewQuery("Item") // here I use some Filter calls, as well as a Limit call and an Order callitems := make([]datastore.PropertyList, 0)_, err := query.GetAll(context, &items) // context has been obviously defined beforeif err != nil {    // something to handle the error, which in my case, it's printing it and setting the server status as 500}更新2:这是一些输出如果使用make([]datastore.PropertyList, 0),则会得到以下信息:datastore: invalid entity type如果使用make(datastore.PropertyList, 0),我会得到:datastore: cannot load field "Foo" into a "datastore.Property": no such struct field在两种情况下(我认为可以丢弃的第一种情况),items我都会得到以下结果:[]
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

go数据存储区模块尚不支持PropertyList。

使用指向切片的指针datastore.Map代替。


查看完整回答
反对 回复 2021-05-10
  • 1 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

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