R2D1 / 문서
TypeScript
TypeScript 패키지는 R2 문서 저장소와 D1 인덱스를 하나의 컬렉션 API로 연결합니다. 런타임에 맞는 어댑터를 선택하고 schema와 document codec을 전달하세요.
설치
Node.js 어댑터에는 Node.js 22 이상이 필요합니다. Cloudflare Workers는 Workers 하위 경로를 사용합니다.
npm install @nexcraft-dev/r2d1Node.js
R2와 D1용 Node.js 어댑터를 사용하세요. 아래 예제에서 r2Config, d1Config, schema, codec은 미리 설정되어 있습니다.
import { R2D1 } from "@nexcraft-dev/r2d1";
import { NodeR2DocumentStore, NodeD1IndexStore } from "@nexcraft-dev/r2d1/node";
const users = await new R2D1(
new NodeR2DocumentStore(r2Config),
new NodeD1IndexStore(d1Config),
).collection(schema, codec);
await users.put({ id: "user-1", country: "NZ", score: 4.5 });
const page = await users
.query().where("country").eq("NZ")
.sortBy("score", "DESC").limit(20).fetch();Cloudflare Workers
R2 버킷을 DOCUMENTS로, D1 데이터베이스를 INDEXES로 바인딩한 다음 Workers 어댑터에 전달하세요.
import { R2D1 } from "@nexcraft-dev/r2d1";
import {
WorkersR2DocumentStore,
WorkersD1IndexStore,
} from "@nexcraft-dev/r2d1/workers";
const users = await new R2D1(
new WorkersR2DocumentStore(env.DOCUMENTS),
new WorkersD1IndexStore(env.INDEXES),
).collection(schema, codec);Java 데이터 호환성
R2 키, D1 테이블과 인덱스, cursor 형식은 Java 규약과 호환됩니다. 문서 바이트 형식은 애플리케이션이 정합니다. Java에는 기본 형식이 없습니다. 같은 바이트를 쓰고 읽도록 TypeScript codec을 설정하세요. jsonCodec은 선택 기능이며 bigint를 지원하지 않습니다. TypeScript의 long 필드에는 bigint를 사용합니다.
전체 예제
저장소에는 Node.js, Workers, 공통 codec 전체 예제가 있습니다.
