如何使用电子邮件地址查询 appengine 数据存储

我正在尝试使用他们的电子邮件地址在 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” 它也被编入索引。


是否有一些特殊的格式需要使用电子邮件地址完成才能使查询工作?


慕的地6264312
浏览 218回答 1
1回答

MMTTMM

为了通过电子邮件 ( AccountEmail)找到用户,必须满足以下所有条件。请检查并确保每个“测试”通过:AccountEmail必须存在具有属性名称的实体。不要忘记属性名称区分大小写。注意datastore名称和struct字段名称可能不同,可以使用tags来更改,例如AccountEmail string `datastore:"email"`该属性必须被索引。请注意,属性是否被索引可能因实体而异,因此您可能有一个实体AccountEmail被索引而另一个实体AccountEmail未被索引。AccountEmail必须有一个类型string。我认为这是微不足道的,也是如此。但请注意,可以使用与User类型不同的string类型保存属性,例如,当您在数据存储查看器中列出实体时,电子邮件将像电子邮件字符串一样显示,但显然它是不同的。要找到具有 的用户AccountEmail="email@address.com",保存的值必须"email@address.com"完全相同。小写字母和大写字母不一样!空格(和所有空白字符)很重要!请检查保存的值是否完全正确,因为例如打印时您不会看到尾随空格,但它们会导致不匹配!此外,一些 unicode 字符具有相同的视觉外观(它们看起来相同)但它们的 unicode 代码点不相同,也会导致不匹配。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go