Как вы сохраняете и ищете объект, который имеет несколько адресов электронной почты? - PullRequest
0 голосов
/ 10 декабря 2018

Следующий код завершается ошибкой, потому что поле электронной почты на самом деле является списком, мне интересно, какой правильный / эффективный / идиоматический способ справиться с этим в движке приложения?

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 Ответ

0 голосов
/ 10 декабря 2018

Вам, вероятно, нужно ссылаться на электронную почту как атрибут Структурированного свойства объекта Email, а не как свойство самого объекта Person.

Я вижу, что Go имеетподдержка загрузки / сохранения таких свойств (см. Вложенные структуры в хранилище данных GAE с использованием Go ) и поддерживает фильтрацию запросов так же, как указано в документации по Python:

.Filter("Email.Email = ", email)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...