컨텐츠로 건너뛰기

Xata & Astro

Xata는 일관된 단일 REST API를 노출하여 관계형 데이터베이스, 검색 엔진 및 분석 엔진의 기능을 결합한 서버리스 데이터 플랫폼입니다.

Xata를 사용하여 데이터베이스 추가

섹션 제목: Xata를 사용하여 데이터베이스 추가
  • 데이터베이스가 생성된 Xata 계정이 필요합니다. (웹 UI에서 샘플 데이터베이스를 사용할 수 있습니다.)
  • 액세스 토큰 (XATA_TOKEN_API)이 필요합니다.
  • 여러분의 데이터베이스 URL이 필요합니다.

Xata CLI를 업데이트하고 초기화하면 .env 파일에 API 토큰이 정의되고 데이터베이스 URL이 정의됩니다.

설정이 끝나면 다음이 필요합니다.

.env
XATA_API_KEY=hash_key
# 사용될 Xata 브랜치
# xata 브랜치가 없는 경우
# git 브랜치와 동일한 이름
XATA_BRANCH=main

그리고 databaseURL은 다음과 같이 정의됩니다.

.xatarc
{
"databaseUrl": "https://your-database-url"
}

환경 변수에 대해 IntelliSense 및 타입 안전성을 추가하려면 src/ 디렉터리에서 env.d.ts 파일을 편집하거나 생성하세요.

src/env.d.ts
interface ImportMetaEnv {
readonly XATA_API_KEY: string;
readonly XATA_BRANCH?: string;
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}

Xata CLI의 코드 생성을 사용하고 TypeScript 옵션을 선택하면 데이터베이스 스키마에 맞는 타입으로 SDK 인스턴스가 생성됩니다. 또한 @xata.io/clientpackage.json 파일에 추가됩니다.

Xata 환경 변수와 데이터베이스 URL은 SDK 인스턴스에서 자동으로 가져오므로 더 이상 설정 작업이 필요하지 않습니다.

이제 프로젝트의 구조는 다음과 같습니다.

  • Directorysrc/
    • xata.ts
    • env.d.ts
  • .env
  • astro.config.mjs
  • package.json
  • .xatarc

게시물을 쿼리하려면 .astro 파일에서 XataClient 클래스를 가져와 사용하세요. 아래 예시에서는 Xata의 샘플 블로그 데이터베이스에서 처음 50개의 게시물을 쿼리합니다.

src/pages/blog/index.astro
---
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가 생성하는 파일을 변경하지 마세요. 스키마가 업데이트되면 변경 사항을 덮어쓰게 되기 때문입니다.

더 많은 백엔드 서비스 안내서