我正在尝试使用他们的电子邮件地址在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)查找用户,必须满足以下所有条件。请检查并确保每个“测试”通过:
AccountEmail
struct
AccountEmail stringdatastore:”email”``
AccountEmail string
该属性必须被索引。请注意,是否对属性建立索引可能会因实体而异,因此您可能有一个实体在其中建立了AccountEmail索引,而另一个实体未在其中建立AccountEmail索引。
AccountEmail必须具有类型string。我认为这是微不足道的。但是请注意,可以使用与该User类型不同的string类型来保存属性,例如,当您在数据存储查看器中列出实体时,电子邮件的显示方式就像是电子邮件字符串一样,但显然是不同。
string
User
要使用查找用户AccountEmail="email@address.com",保存的值必须"email@address.com"准确。小写和大写字母不同!空格(和所有空格字符)很重要!请检查保存的值是否正是此值,例如在打印时将看不到尾随空格,但它们会导致不匹配!另外,某些unicode字符具有相同的视觉外观(它们看起来相同),但是它们的unicode代码点不相同,并且还会导致不匹配。
AccountEmail="email@address.com"
"email@address.com"