Давайте рассмотрим SQL запрос, который возвращает несколько записей из базы данных. Обновим метод SnippetModel.Latest(), чтобы он возвращал десять последних заметок (при условии, что срок их действия не истёк).

Мы будем использовать следующий SQL запрос:

Премиум 👑 канал по Golang

Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎

Подписаться на канал

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК ЧАТ в Telegram


Откройте файл pkg/models/mysql/snippets.go и обновите код для метода Latest():

Важно: Закрытие набора результатов с использованием defer rows.Close() является очень важным моментом. Пока набор результатов открыт, он будет поддерживать соединение с базовой базой данных открытым… поэтому, если в этом методе что-то пойдет не так и набор результатов не будет закрыт, это приведет к тому, что соединения с базой данных будет израсходовано в пустую.

Использование модели в обработчиках

Вернемся в файл cmd/web/handlers.go и обновим обработчик home(), таким образом, чтобы он вызвал метод SnippetModel.Latest() который выведет на страницу последние 10 заметок из базы данных .

А пока, просто закомментируем код, относящийся к рендерингу шаблона. Сделаем это следующим образом:

Запускаем наше веб-приложение из терминала:

Переходим на главную страницу http://127.0.0.1:4000 вы должны увидеть ответ, похожий на следующий:

 

Golang вывод последних записей из базы данных

У нас появились только 2 записи, хотя в базе данных у нас как минимум 4 заметок. Ниже вы можете увидеть содержимое таблицы snippets:

Проверяем данные из столбика expires и понимаем, что из за нашего SQL запроса, а именно WHERE expires > UTC_TIMESTAMP() который понимается как «все записи срок которых еще не истёк». SQL функция UTC_TIMESTAMP() возвращает текущую дату с точности до секунды.

Вот и получается, что записи с ID 3 и 4 имеют старый срок годности и они нам не видны на главной странице сайта на golang!

Я не знаю в какой год вы прочтете эту статью так, что я обновлю для вас срок годности записей с ID 1 и 2 до 2030 года. В архиве (папка SQL) будет свежая резервная копия базы данных, вы можете заменить её на свою. Пишу ваш текущий год в комментариях 🙂

Скачать исходный код

В конце каждого урока — мы публикуем архив с исходным кодом урока на текущий момент.

Скачать: snippetbox-21.zip

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии