콘텐츠로 이동

Turso & Astro

Turso는 SQLite의 포크인 libSQL을 기반으로 구축된 분산 데이터베이스입니다. 낮은 쿼리 대기 시간에 최적화되어 글로벌 애플리케이션에 적합합니다.

Astro에서 Turso 초기화

전제조건

  • Turso CLI 설치 및 로그인
  • 스키마가 포함된 Turso 데이터베이스
  • 귀하의 데이터베이스 URL
  • 액세스 토큰

환경 변수 구성

다음 명령을 사용하여 데이터베이스 URL을 얻으세요.

turso db show <database-name> --url

데이터베이스에 대한 인증 토큰을 만듭니다.

turso db tokens create <database-name>

위 두 명령의 출력을 프로젝트 루트의 .env 파일에 추가하세요. 이 파일이 존재하지 않으면 파일을 만드세요.

TURSO_DATABASE_URL=libsql://...
TURSO_AUTH_TOKEN=

:::caution이러한 비공개 환경 변수를 생성할 때 PUBLIC_ 접두사를 사용하지 마세요. 그러면 클라이언트에 이러한 값이 노출됩니다.:::

LibSQL 클라이언트 설치

Turso를 Astro에 연결하려면 @libsql/client를 설치하세요.

 npm install @libsql/client

새 클라이언트 초기화

src 폴더에 turso.ts 파일을 생성하고 createClient를 호출하여 TURSO_DATABASE_URLTURSO_AUTH_TOKEN을 전달합니다.

import { createClient } from "@libsql/client/web";

export const turso = createClient({
  url: import.meta.env.TURSO_DATABASE_URL,
  authToken: import.meta.env.TURSO_AUTH_TOKEN,
});

데이터베이스 쿼리

데이터베이스의 정보에 액세스하려면 turso를 가져오고 .astro 컴포넌트에서 SQL 쿼리를 실행하세요.

다음 예시는 테이블에서 모든 posts를 가져온 다음 <BlogIndex /> 컴포넌트에 제목 목록을 표시합니다.

---
import { turso } from '../turso'

const { rows } = await turso.execute('SELECT * FROM posts')
---

<ul>
  {rows.map((post) => (
    <li>{post.title}</li>
  ))}
</ul>

SQL Placeholders

execute() 메서드는 객체를 사용하여 slug 또는 페이지네이션과 같은 변수를 SQL 문에 전달할 수 있습니다.

다음 예시는 WHERE를 사용하여 Astro.params에서 검색된 값이 slugposts 테이블의 항목을 가져온 다음 게시물의 제목을 표시합니다.

---
import { turso } from '../turso'

const { slug } = Astro.params

const { rows } = await turso.execute({
  sql: 'SELECT * FROM posts WHERE slug = ?',
  args: [slug!]
})
---

<h1>{rows[0].title}</h1>

Turso 자료

더 많은 백엔드 서비스 가이드

기여하기 커뮤니티 후원하기