以下代码失败,因为电子邮件字段实际上是一个列表,我想知道在app引擎中处理这个的正确/有效/惯用方法是什么?
type Person struct {
Name string
Company string
Email []EmailAddress
}
type EmailAddress {
Type string // home, office, etc...
Email string
}
var items []Person
q := datastore.NewQuery("Person").Filter("Company =", company).Filter("Email = ", email).Limit(1)
_, err := a.client.GetAll(a.ctx, q, &items)
它失败并显示以下消息,我认为这是因为电子邮件字段是一组“排序”:
datastore: bad query filter value type: invalid Value type func() string
我是否需要做一些像拆分电子邮件地址字段的事情,即:
type Person struct {
Name string
Company string
EmailType []string // home, office
EmailAddress []string // bob@work, bob@home
}
1 回答
您可能需要将电子邮件作为实体Structured Property
Email
的属性引用,而不是Person
实体本身的属性 .我只是在这里猜测 . 我看到Go支持加载/保存这些属性(参见Nested structs on GAE datastore using Go),但我没有发现查询过滤 . Python允许这些内容,也许也可以: