我正在尝试在 Go on GAE 中开发自定义用户模型/身份验证代码。以下代码是对 demos/guestbook 应用程序中一些代码的简单修改:
q := datastore.NewQuery("User").Filter("Email =", email)
users := make([]User, 0, 1)
if _, err := q.GetAll(c, &users); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
从表单中提取电子邮件的位置。它只是使用给定的电子邮件查询用户的数据存储。如果拥有电子邮件的用户存在,则它可以正常工作,如果不存在,则会因“内部服务器错误”页面而死。我不明白的是(我猜是关于 Go 中的错误处理,或者可能是数据存储查询),这就是为什么我不能在那个if error
块内做任何其他事情。像这样的轻微mod:
if _, err := q.GetAll(c, &users); err != nil {
fmt.Fprintf(w, "%s\n", "user not found")
}
生成相同的“内部服务器错误”页面,而不是仅打印“未找到用户”。
谢谢!