您如何坚持并搜索具有多个电子邮件地址的实体?
How do you persist and search for an entity which has multiple email addresses?
以下代码失败,因为电子邮件字段实际上是一个列表,我想知道在应用程序引擎中 correct/efficient/idiomatic 处理这个问题的方法是什么?
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)
失败并显示以下消息,我认为这是由于电子邮件字段是 'set' 类型的事实造成的:
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
}
您可能需要将电子邮件引用为实体 Structured Property Email
的属性,而不是 Person
实体本身的 属性。
我看到 Go 支持 loading/saving 此类属性(请参阅 Nested structs on GAE datastore using Go),并且支持查询过滤的方式与 Python 文档中所示的方式相同:
.Filter("Email.Email = ", email)
以下代码失败,因为电子邮件字段实际上是一个列表,我想知道在应用程序引擎中 correct/efficient/idiomatic 处理这个问题的方法是什么?
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)
失败并显示以下消息,我认为这是由于电子邮件字段是 'set' 类型的事实造成的:
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
}
您可能需要将电子邮件引用为实体 Structured Property Email
的属性,而不是 Person
实体本身的 属性。
我看到 Go 支持 loading/saving 此类属性(请参阅 Nested structs on GAE datastore using Go),并且支持查询过滤的方式与 Python 文档中所示的方式相同:
.Filter("Email.Email = ", email)