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, так что больше никакой работы по настройке не требуется.
Теперь ваш проект должен иметь следующую структуру:
- Директорияsrc/- 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, поскольку после обновления схемы ваши изменения будут перезаписаны.