Я пытаюсь разработать пользовательскую модель/код аутентификации пользователя в 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
. Такой небольшой мод:
if _, err := q.GetAll(c, &users); err != nil {
fmt.Fprintf(w, "%s\n", "user not found")
}
создает ту же страницу «Внутренняя ошибка сервера», а не просто печатает «пользователь не найден».
Спасибо!