DrizzleORM v0.29.4 版本发布
2024年2月22日

新功能

🎉 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<never>,
	{
		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 核心团队的建议,您应该使用 Client 实例而不是 connect()

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

// create the connection
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 连接更改为 Client 实例,以防止未来出现任何运行时错误。

之前我们的文档指出使用 connect(),并且只有此函数可以传递给 Drizzle。在此版本中,我们根据 database-js 团队的建议,增加了对 new Client() 的支持,并弃用了 connect()。在此版本中,当您尝试传递 connect() 函数的结果时,将会看到一个警告。

警告文本

Warning: You need to pass an instance of 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);

Starting from version 0.30.0, you will encounter an error if you attempt to use anything other than a Client instance.

Please make the necessary changes now to prevent any runtime errors in the future