Xata и Astro
Xata - это Бессерверная Платформа Данных, которая сочетает в себе возможности реляционной базы данных, поисковой системы и аналитического механизма, предоставляя единый согласованный REST API.
Добавление базы данных с Xata
Заголовок раздела Добавление базы данных с XataПредварительные требования
Заголовок раздела Предварительные требования- Xata аккаунт с созданной базой данных. (Вы можете использовать пример базы данных из веб-интерфейса.)
- Токен доступа (
XATA_TOKEN_API). - URL вашей базы данных.
После обновления и инициализации Xata CLI у вас будет токен API в файле .env и определен URL базы данных.
По окончании настройки у вас должны быть:
XATA_API_KEY=hash_key
# Ветка Xata, которая будет использоваться# если не существует ветки xata с# тем же именем, что и ваша ветка gitXATA_BRANCH=mainИ определен databaseURL:
{ "databaseUrl": "https://your-database-url"}Конфигурация окружения
Заголовок раздела Конфигурация окруженияЧтобы получить IntelliSense и безопасность типов для переменных окружения, отредактируйте или создайте файл env.d.ts в каталоге src/:
interface ImportMetaEnv { readonly XATA_API_KEY: string; readonly XATA_BRANCH?: string;}
interface ImportMeta { readonly env: ImportMetaEnv;}Узнайте больше о переменных среды и файлах .env в Astro.
Используя генерацию кода из Xata CLI и выбрав опцию TypeScript, вы сгенерировали экземпляр SDK с типами, адаптированными под схему вашей базы данных. Кроме того, @xata.io/client был добавлен в ваш package.json.
Ваши переменные окружения Xata и url базы данных были автоматически подтянуты экземпляром SDK, так что больше никакой работы по настройке не требуется.
Теперь ваш проект должен иметь следующую структуру:
Directorysrc/
- xata.ts
- env.d.ts
- .env
- astro.config.mjs
- package.json
- .xatarc
Создание запросов
Заголовок раздела Создание запросовЧтобы запросить записи, импортируйте и используйте класс XataClient в файле .astro. Пример ниже запрашивает первые 50 постов из базы данных примеров блога Xata.
---import { XataClient } from '../../xata';
const xata = new XataClient({ apiKey: import.meta.env.XATA_API_KEY, branch: import.meta.env.XATA_BRANCH});
const { records } = await xata.db.Posts.getPaginated({ pagination: { size: 50 }})---
<ul> {records.map((post) => ( <li>{post.title}</li> ))}</ul>Важно отметить, что SDK необходимо перегенерировать каждый раз, когда меняется схема. Поэтому избегайте внесения изменений в сгенерированные файлы, созданные Xata CLI, поскольку после обновления схемы ваши изменения будут перезаписаны.