DrizzleORM v0.29.4 릴리스
Feb 22, 2024

새로운 기능

🎉 Neon HTTP 배치 처리

더 많은 정보는 Neon 문서Neon과 Drizzle 시작하기를 참고하세요.

import { neon } from '@neondatabase/serverless';
import { drizzle } from 'drizzle-orm/neon-http';
import { usersTable } from './schema';

const sql = neon(process.env.DRIZZLE_DATABASE_URL!);
const db = drizzle(sql);

const batchResponse: BatchType = await db.batch([
	db.insert(usersTable).values({ id: 1, name: 'John' }).returning({
		id: usersTable.id,
	}),
	db.insert(usersTable).values({ id: 2, name: 'Dan' }),
	db.query.usersTable.findMany({}),
	db.query.usersTable.findFirst({}),
]);
type BatchType = [
	{
		id: number;
	}[],
	NeonHttpQueryResult,
	{
		id: number;
		name: string;
		verified: number;
		invitedBy: number | null;
	}[],
	{
		id: number;
		name: string;
		verified: number;
		invitedBy: number | null;
	} | undefined,
];

개선 사항

database-jsPlanetScale 팀 덕분에, database-js의 기본 동작과 인스턴스를 업데이트했습니다.

database-js 코어 팀의 제안에 따라, connect() 대신 Client 인스턴스를 사용해야 합니다:

import { Client } from '@planetscale/database';
import { drizzle } from 'drizzle-orm/planetscale-serverless';

// 연결 생성
const client = new Client({
	host: process.env['DATABASE_HOST'],
	username: process.env['DATABASE_USERNAME'],
	password: process.env['DATABASE_PASSWORD'],
});

const db = drizzle(client);

경고: 이 버전에서는 주요 변경 사항이 없지만, 0.30.0 버전부터는 Client 인스턴스 이외의 것을 사용하려고 하면 오류가 발생합니다.

향후 런타임 오류를 방지하기 위해 지금부터 PlanetScale 연결을 변경하는 것을 권장합니다.

이전 문서에서는 connect()를 사용하도록 안내했고, 이 함수만 drizzle에 전달할 수 있었습니다. 이번 릴리스에서는 database-js 팀의 제안에 따라 new Client()를 지원하고 connect()를 더 이상 사용하지 않도록 변경했습니다. 이번 릴리스에서는 connect() 함수의 결과를 전달하려고 할 때 다음과 같은 경고가 표시됩니다:

경고 메시지

경고: Client 인스턴스를 전달해야 합니다:

import { Client } from "@planetscale/database";

const client = new Client({
  host: process.env["DATABASE_HOST"],
  username: process.env["DATABASE_USERNAME"],
  password: process.env["DATABASE_PASSWORD"],
});

const db = drizzle(client);

0.30.0 버전부터는 Client 인스턴스 이외의 것을 사용하려고 하면 오류가 발생합니다.

향후 런타임 오류를 방지하기 위해 지금부터 필요한 변경을 진행하세요.