代码之家  ›  专栏  ›  技术社区  ›  Jay

如何持久化和搜索具有多个电子邮件地址的实体?

  •  1
  • Jay  · 技术社区  · 7 年前

    下面的代码失败了,因为email字段实际上是一个列表,我想知道如何正确/高效/惯用地处理这个应用程序引擎?

    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 回复  |  直到 7 年前
        1
  •  1
  •   Jay    7 年前

    您可能需要将电子邮件作为实体的 Structured Property Email ,而不是作为 Person

    我看到Go支持加载/保存此类属性(请参见 Nested structs on GAE datastore using Go ),并以Python文档中指示的相同方式支持查询筛选:

    .Filter("Email.Email = ", email)