# @drizzle-adapter/neon-http 中文文档

规范地址：https://npmcn.com/package/%40drizzle-adapter/neon-http/

版本：1\.1\.1
npm 元数据更新时间：2026-03-25T23:49:12.550Z
中文译文更新时间：2026-11-12T20:16:04.814Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40drizzle-adapter/neon-http
原文对照：https://npmcn.com/package/%40drizzle-adapter/neon-http/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：56.8 kB，51 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：3 个
- peer 依赖：@neondatabase/serverless ^0\.10\.4
- 首次发布：2024-12-03T05:42:02.920Z
- 最新版本发布：2026-03-25T23:49:12.414Z
- 近 30 天下载量：20339（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 1 个）

## 中文简介

尼昂无服务器 PostgreSQL 适配器执行 Drizzle适配器生态系统.

## 安装

```sh
npm install @drizzle-adapter/neon-http
```

也可以使用：`pnpm add @drizzle-adapter/neon-http`、`yarn add @drizzle-adapter/neon-http`、`bun add @drizzle-adapter/neon-http`

## README

# @ rizzle- adapter/ neon- http

尼昂无服务器 PostgreSQL 适配器执行 Drizzle适配器生态系统.

## 概览

这个 `@drizzle-adapter/neon-http` 软件包为 Drizzle 适应器接口提供 Neon 执行。 虽然你不直接与此软件包互动( 您使用 `@drizzle-adapter/core` 相反,它使得尼昂的无服务器 PostgreSQL 在Drizzle适配器生态系统中得到了支持.

## 为什么是尼昂?

Neon为现代应用提供了独特的优势:

-   **基于 HTTP 的 PostgreSQL**: HTTP 上的直接数据库访问, 适合无服务器和边缘环境
-   **无服务器 PostgreSQL**: 实时缩放为零的真服务器
-   **数据库分支**: 为开发和测试创建即时数据库分支
-   **自动缩放**: 独立计算和存储缩放
-   **无底存储**: 将存储与无限容量计算分开
-   **边际计算**: 通过计算放置的低相关性访问
-   **成本效益**: 只支付实际计算和储存使用费
-   **邮递SQL 兼容性**: 100% PostgreSQL 符合最新特性
-   **即时恢复**: 内置备份并恢复能力

### 完美为:

1.  **无服务器应用程序**: 0 冷从即时缩放开始
2.  **发展流动**: 用于测试和中转的即时数据库分支
3.  **边缘应用程序**:全世界低相关性数据存取
4.  **成本调整后的工作量**: 只为您所用支付
5.  **现代发展**: 适合JAMstack和无服务器架构的完美

## 安装

```bash
# Install both the core package and the Neon adapter
pnpm install @drizzle-adapter/core @drizzle-adapter/neon-http
```

## 重要:适配器注册

适配器要正确使用 DrizzleAdapterFactory 操作,必须导入它进行自我注册的副作用:

```typescript
// Import for side effects - adapter will self-register
import '@drizzle-adapter/neon-http';

// Now you can use the factory
import { DrizzleAdapterFactory } from '@drizzle-adapter/core';
```

## 使用量

### 配置

```typescript
import { DrizzleAdapterFactory, TypeDrizzleDatabaseConfig } from '@drizzle-adapter/core';

const config: TypeDrizzleDatabaseConfig = {
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:pass@your-branch.your-project.neon.tech/neondb'
};

const factory = new DrizzleAdapterFactory();
const adapter = factory.create(config);
```

### 关于连接的重要注释

虽然Neon在HTTP上运行,不需要传统的数据库连接,但这个适配器执行兼容性的标准连接接口. 这意味着您的代码在不同的数据库适配器中仍可移植:

```typescript
// These connection operations are no-ops for Neon HTTP but ensure
// your code remains portable if you switch to another database
const connection = await adapter.getConnection();

const client = connection.getClient();

try {
  // Your database operations
} finally {
  await connection.disconnect(); // No-op for Neon HTTP
}
```

这个设计允许您在Neon和其他数据库之间切换,而不改变您的应用程序代码.

### Schema 定义

```typescript
const dataTypes = adapter.getDataTypes();

const users = dataTypes.dbTable('users', {
  id: dataTypes.dbUuid('id').primaryKey().defaultRandom(),
  name: dataTypes.dbText('name').notNull(),
  email: dataTypes.dbText('email').notNull().unique(),
  profile: dataTypes.dbJsonb('profile'),
  searchVector: dataTypes.dbTsVector('search_vector'),
  createdAt: dataTypes.dbTimestampTz('created_at').defaultNow()
});

const posts = dataTypes.dbTable('posts', {
  id: dataTypes.dbUuid('id').primaryKey().defaultRandom(),
  userId: dataTypes.dbUuid('user_id')
    .references(() => users.id),
  title: dataTypes.dbText('title').notNull(),
  content: dataTypes.dbText('content').notNull(),
  tags: dataTypes.dbArray('tags', { type: 'text' }),
  metadata: dataTypes.dbJsonb('metadata'),
  published: dataTypes.dbBoolean('published').default(false),
  createdAt: dataTypes.dbTimestampTz('created_at').defaultNow()
});
```

### 基本 CRUD 操作

```typescript
import { eq, and, or, desc, sql } from 'drizzle-orm';

const client = await adapter.getConnection().getClient();

// INSERT
// Single insert with returning
const [newUser] = await client
  .insert(users)
  .values({
    name: 'John Doe',
    email: 'john@example.com',
    profile: { bio: 'Hello!' }
  })
  .returning();

// Bulk insert
await client
  .insert(posts)
  .values([
    {
      userId: newUser.id,
      title: 'First Post',
      content: 'Hello, world!',
      tags: ['hello', 'first']
    },
    {
      userId: newUser.id,
      title: 'Second Post',
      content: 'Another post',
      tags: ['second']
    }
  ]);

// SELECT
// Select all
const allUsers = await client
  .select()
  .from(users);

// Select with conditions
const user = await client
  .select()
  .from(users)
  .where(eq(users.email, 'john@example.com'));

// Select with join and array operations
const postsWithTags = await client
  .select({
    userName: users.name,
    postTitle: posts.title,
    tags: posts.tags
  })
  .from(posts)
  .leftJoin(users, eq(posts.userId, users.id))
  .where(sql`${posts.tags} && ARRAY['hello']::text[]`)
  .orderBy(desc(posts.createdAt));

// UPDATE
// Update with JSONB operations
await client
  .update(users)
  .set({
    profile: sql`${users.profile} || '{"title": "New Title"}'::jsonb`
  })
  .where(eq(users.id, newUser.id));

// DELETE
await client
  .delete(posts)
  .where(
    and(
      eq(posts.userId, newUser.id),
      eq(posts.published, false)
    )
  );
```

## 神经元特征

### 数据库分支

适合开发和测试工作流程:

```typescript
// Development branch
const devAdapter = factory.create({
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:pass@dev-branch.project.neon.tech/neondb'
});

// Staging branch
const stagingAdapter = factory.create({
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:pass@staging-branch.project.neon.tech/neondb'
});

// Production branch
const prodAdapter = factory.create({
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:pass@main-branch.project.neon.tech/neondb'
});
```

### HTTP 优化

```typescript
const client = await adapter.getConnection().getClient();

// Queries are automatically optimized for HTTP
const result = await client
  .select()
  .from(users)
  .where(eq(users.id, userId));
```

## 最佳做法

1.  **查询优化**: 尽量减少查询次数以减少 HTTP 请求
2.  **数据库分支**: 利用分支开发、测试和中转环境
3.  **边际计算**: 部署在用户附近以降低延迟度
4.  **处理错误**: 对网络问题执行适当的重试逻辑
5.  **可移动性**: 将连接接口用于数据库可移植性

## 捐款

我们欢迎捐款! 请随意提交拉力请求 对于重大变动,请先开出一个问题来讨论你想要改变什么.

## 相关软件包

-   [@ 细雨适应器/ 核心](https://npmcn.com/package/%40drizzle-adapter/core) - 核心接口和类型
-   [@ 细雨适应器/ pg- core](https://npmcn.com/package/%40drizzle-adapter/pg-core) - 共享 PostgreSQL 功能

## 常见问题

### @drizzle-adapter/neon-http 是什么？

尼昂无服务器 PostgreSQL 适配器执行 Drizzle适配器生态系统\.

### 如何安装 @drizzle-adapter/neon-http？

在项目目录运行 npm install @drizzle-adapter/neon-http，或使用 pnpm add / yarn add / bun add。

### @drizzle-adapter/neon-http 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @drizzle-adapter/neon-http 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @drizzle-adapter/neon-http 可以商用吗？

@drizzle-adapter/neon-http 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @drizzle-adapter/neon-http 的下载量有多少？

根据 npm 官方下载统计，@drizzle-adapter/neon-http 在 2026/10/13 – 2026/11/11 这 30 天内被下载 20,339 次，日均约 678 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @drizzle-adapter/neon-http 还在维护吗？

最新版本 1\.1\.1 发布于 2026/03/26（7 个月前）；至今共发布 13 个版本，其中过去 12 个月发布了 1 个；首次发布于 2024/12/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

