如何使用电子邮件地址查询 Appengine 数据存储区
How do I query an appengine datastore with an email address
我正在尝试使用电子邮件地址在 Appengine 数据存储区中查找用户。我正在使用 Go。
此代码未找到任何用户。
var users []entity.User
q := datastore.NewQuery("users").Filter("AccountEmail =", "email@address.com")
_, err := q.GetAll(c, &users)
如果我更改查询以使用 "Id" 属性 查找用户,它就可以正常工作。
var users []entity.User
q := datastore.NewQuery("users").Filter("Id", "185804764220139124118")
_, err := q.GetAll(c, &users)
我已确认 属性 的名称和 "AccountEmail" 的值是正确的。 "AccountEmail"它也被索引了。
是否需要对电子邮件地址进行一些特殊格式化才能使查询生效?
为了通过电子邮件查找用户 (AccountEmail
),必须满足以下所有条件。请检查并确保每个 "test" 通过:
必须存在名称为 属性 AccountEmail
的实体。不要忘记 属性 名称区分大小写。请注意,数据存储名称和 struct
字段名称可能不同,可以使用标签来更改它,例如
AccountEmail string `datastore:"email"`
必须对 属性 进行索引。请注意,属性 是否被索引可能因实体而异,因此您可能有一个 AccountEmail
被索引的实体和另一个 AccountEmail
未被索引的实体。
AccountEmail
必须有类型 string
。我认为这是微不足道的,事实也是如此。但请注意,可以使用不同于 string
类型的 User
类型保存 属性,例如,当您在数据存储查看器中列出实体时,将显示电子邮件就像它是一个电子邮件字符串一样,但显然它是不同的。
要找到AccountEmail="email@address.com"
的用户,保存的值必须正好是"email@address.com"
。大小写字母不一样!空格(和所有空白字符)很重要!请检查保存的值是否正是这个值,因为例如打印时您不会看到尾随空格,但它们会导致不匹配!此外,一些 unicode 字符具有相同的视觉外观(它们看起来相同)但它们的 unicode 代码点不相同,也会导致不匹配。
我正在尝试使用电子邮件地址在 Appengine 数据存储区中查找用户。我正在使用 Go。
此代码未找到任何用户。
var users []entity.User
q := datastore.NewQuery("users").Filter("AccountEmail =", "email@address.com")
_, err := q.GetAll(c, &users)
如果我更改查询以使用 "Id" 属性 查找用户,它就可以正常工作。
var users []entity.User
q := datastore.NewQuery("users").Filter("Id", "185804764220139124118")
_, err := q.GetAll(c, &users)
我已确认 属性 的名称和 "AccountEmail" 的值是正确的。 "AccountEmail"它也被索引了。
是否需要对电子邮件地址进行一些特殊格式化才能使查询生效?
为了通过电子邮件查找用户 (AccountEmail
),必须满足以下所有条件。请检查并确保每个 "test" 通过:
必须存在名称为 属性
AccountEmail
的实体。不要忘记 属性 名称区分大小写。请注意,数据存储名称和struct
字段名称可能不同,可以使用标签来更改它,例如AccountEmail string `datastore:"email"`
必须对 属性 进行索引。请注意,属性 是否被索引可能因实体而异,因此您可能有一个
AccountEmail
被索引的实体和另一个AccountEmail
未被索引的实体。AccountEmail
必须有类型string
。我认为这是微不足道的,事实也是如此。但请注意,可以使用不同于string
类型的User
类型保存 属性,例如,当您在数据存储查看器中列出实体时,将显示电子邮件就像它是一个电子邮件字符串一样,但显然它是不同的。要找到
AccountEmail="email@address.com"
的用户,保存的值必须正好是"email@address.com"
。大小写字母不一样!空格(和所有空白字符)很重要!请检查保存的值是否正是这个值,因为例如打印时您不会看到尾随空格,但它们会导致不匹配!此外,一些 unicode 字符具有相同的视觉外观(它们看起来相同)但它们的 unicode 代码点不相同,也会导致不匹配。