DrizzleORM v0.29.4 发布
Feb 22, 2024

新特性

🎉 Neon HTTP Batch

更多信息请查看 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';

// 创建连接
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。在此版本中,我们添加了对 new Client() 的支持,并弃用了 connect(),建议来自 database-js 团队。在此版本中,当尝试传递 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 实例以外的任何内容,将遇到错误。

请立即进行必要的更改,以防止将来出现任何运行时错误。
Become a Gold Sponsor