datastore.Get()
只能用于通过其密钥从数据存储中获取实体,因此其密钥必须是已知/存在的。
这显然不是你想要做的。您正在尝试按非键的属性提取实体。要做到这一点,您需要运行
查询
.
数据存储查询由
datastore.Query
类型您需要创建一个查询并对其设置过滤器。在您的情况下,您希望按用户名和/或电话属性进行筛选。
这就是它的样子。获取按电话筛选的患者实体:
q := datastore.NewQuery("Patient").Filter("phone =", patient.Phone)
var patients []*Patient
keys, err := q.GetAll(ctx, &patients)
if err != nil {
// Handle error
return
}
// patients contains patients with the given phone number
获取按电话号码和用户名筛选的患者的示例:
q := datastore.NewQuery("Patient").
Filter("phone =", patient.Phone).
Filter("username =", patient.UserName)
var patients []*Patient
keys, err := q.GetAll(ctx, &patients)
if err != nil {
// Handle error
return
}
// patients contains patients with the given phone number and username