@astrojs/ db
Astro DB - это полностью управляемая база данных SQL, разработанная для экосистемы Astro: разрабатывайте локально в Astro и развертывайте из вашей панели управления Astro Studio.
С Astro DB у вас есть мощное, локальное, типобезопасное средство для запросов и моделирования контента в виде реляционной базы данных. Просматривайте, управляйте и развертывайте свои удаленные хостинговые данные через вашу интерактивную панель управления Studio.
Установка
Заголовок раздела УстановкаAstro включает команду astro add
для автоматизации установки официальных интеграций. При желании вы также можете установить интеграции вручную.
Запустите одну из следующих команд в новом окне терминала.
Установка вручную
Заголовок раздела Установка вручнуюЕсли вы предпочитаете устанавливать все с нуля самостоятельно, пропустите astro add
и следуйте этим инструкциям, чтобы установить Astro DB самостоятельно.
1. Установите интеграцию из npm с помощью менеджера пакетов
Заголовок раздела 1. Установите интеграцию из npm с помощью менеджера пакетов2. Добавьте интеграцию в astro.config.mjs
Заголовок раздела 2. Добавьте интеграцию в astro.config.mjs3. Настройте вашу базу данных
Заголовок раздела 3. Настройте вашу базу данныхСоздайте файл db/config.ts
в корне вашего проекта. Это специальный файл, который Astro будет автоматически загружать и использовать для настройки таблиц вашей базы данных.
Справочник по конфигурации таблиц
Заголовок раздела Справочник по конфигурации таблицcolumns
Заголовок раздела columnsСтолбцы таблицы настраиваются с использованием объекта columns
:
Столбцы настраиваются с использованием утилиты column
. column
поддерживает следующие типы:
column.text(...)
- храните простой или разнообразный текстовый контентcolumn.number(...)
- храните целочисленные и числовые значения с плавающей запятойcolumn.boolean(...)
- храните значения true / falsecolumn.date(...)
- храните объектыDate
, разобранные как строковые значения ISO для хранения данныхcolumn.json(...)
- храните произвольные JSON-объекты, разобранные как строковые JSON для хранения данных
Есть несколько общих значений конфигурации для всех столбцов:
primaryKey
- Установите столбец типаnumber
илиtext
как уникальный идентификатор.optional
- По умолчанию Astro DB используетNOT NULL
для всех столбцов. Установитеoptional
вtrue
, чтобы разрешить значения null.default
- Установите значение по умолчанию для новых записей. Это принимает либо статическое значение, либо строкуsql
для сгенерированных значений, таких как метки времени.unique
- Пометьте столбец как уникальный. Это предотвращает дублирование значений в таблице.references
- Ссылка на связанную таблицу по столбцу. Это создает ограничение внешнего ключа, что означает, что каждое значение столбца должно иметь соответствующее значение в ссылочной таблице.
indexes
Заголовок раздела indexesИндексы таблиц используются для повышения скорости поиска по заданному столбцу или комбинации столбцов. Свойство indexes
принимает объект с уникальным именем индекса в качестве ключа:
Для каждого индекса доступны следующие параметры конфигурации:
on
:string | string[]
- Один столбец или массив имен столбцов для индексации.unique
:boolean
- Установите значениеtrue
для обеспечения уникальности значений в индексируемых столбцах.
foreignKeys
Заголовок раздела foreignKeysforeignKeys
- это расширенный API для связи нескольких столбцов таблицы. Если вам нужно сослаться только на один столбец, попробуйте использовать свойство столбца references
Внешние ключи используются для установления связи между двумя таблицами. Свойство foreignKeys
принимает массив объектов конфигурации, которые могут связывать один или несколько столбцов между таблицами:
Каждый объект конфигурации внешнего ключа принимает следующие свойства:
columns
:string[]
- Массив имен столбцов для связи со ссылающейся таблицей.references
:() => Column[]
- Функция, возвращающая массив столбцов из таблицы, на которую ссылается объект.
Справочник по CLI Astro DB
Заголовок раздела Справочник по CLI Astro DBAstro DB включает в себя набор команд CLI для взаимодействия с базой данных вашего проекта на хостинге и учетной записью Astro Studio.
Эти команды вызываются автоматически при использовании действия GitHub CI, а также могут быть вызваны вручную с помощью CLI astro db
.
astro db push
Заголовок раздела astro db pushФлаги:
--force-reset
Сбросьте все производственные данные, если требуется изменение структуры данных.
Безопасно отправьте изменения конфигурации базы данных в вашу проектную базу данных. Это проверит наличие риска потери данных и поможет вам с любыми рекомендуемыми шагами миграции. Если необходимо сделать изменение структуры данных, используйте флаг --force-reset
, чтобы сбросить все производственные данные.
astro db verify
Заголовок раздела astro db verifyПроверьте, нет ли различий между конфигурациями локальной и удаленной баз данных. Эта проверка выполняется автоматически при запуске astro db push
. verify
сравнит ваш локальный файл db/config.ts
с удаленной базой данных и предупредит, если будут обнаружены изменения.
astro db execute <file-path>
Заголовок раздела astro db execute <file-path>Флаги:
--remote
Выполнить в вашей проектной базе данных Studio. Не указывайте для запуска на вашем сервере разработки.
Выполняет файл .ts
или .js
для чтения или записи в вашу базу данных. Принимает путь к файлу в качестве аргумента и поддерживает использование модуля astro:db
для написания безопасных для типов запросов. Используйте флаг --remote
для запуска с базой данных проекта Studio, или опустите этот флаг для запуска с сервером разработки. Пример файла см. в разделе заполнить данные разработки.
astro db shell --query <sql-string>
Заголовок раздела astro db shell --query <sql-string>Флаги:
--query
Сырой SQL-запрос для выполнения.--remote
Выполнить в вашей проектной базе данных Studio. Опустите, чтобы выполнить на вашем сервере разработки.
Выполните необработанный SQL-запрос к вашей базе данных. Используйте флаг --remote
для выполнения в базе данных проекта Studio или опустите этот флаг для выполнения на сервере разработки.
Справочник по утилитам Astro DB
Заголовок раздела Справочник по утилитам Astro DBisDbError()
Заголовок раздела isDbError()Функция isDbError()
проверяет, является ли ошибка исключением базы данных libSQL. Это может быть ошибка ограничения внешнего ключа при использовании ссылок или отсутствие полей при вставке данных. Вы можете комбинировать isDbError()
с блоком try / catch для обработки ошибок базы данных в вашем приложении: