@drizzle-adapter/neon-http

中文文档
1.1.1发布于 2026/03/26MITTypeScriptES Module近 30 天下载 2万

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

中文使用文档
文档目录16 节
  1. 概览
  2. 为什么是尼昂?
  3. 完美为:
  4. 安装
  5. 重要:适配器注册
  6. 使用量
  7. 配置
  8. 关于连接的重要注释
  9. Schema 定义
  10. 基本 CRUD 操作
  11. 神经元特征
  12. 数据库分支
  13. HTTP 优化
  14. 最佳做法
  15. 捐款
  16. 相关软件包

@ 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和无服务器架构的完美

安装

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

重要:适配器注册

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

// 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';

使用量

配置

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

const config: TypeDrizzleDatabaseConfig = {
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:[email protected]/neondb'
};

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

关于连接的重要注释

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

// 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 定义

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 操作

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: '[email protected]',
    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, '[email protected]'));

// 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)
    )
  );

神经元特征

数据库分支

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

// Development branch
const devAdapter = factory.create({
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:[email protected]/neondb'
});

// Staging branch
const stagingAdapter = factory.create({
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:[email protected]/neondb'
});

// Production branch
const prodAdapter = factory.create({
  DATABASE_DRIVER: 'neon-http',
  DATABASE_URL: 'postgres://user:[email protected]/neondb'
});

HTTP 优化

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. 可移动性: 将连接接口用于数据库可移植性

捐款

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

版本与发布记录

@drizzle-adapter/neon-http 共发布 13 个版本,首次发布于 2024/12/03;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.1.1latest2026/03/267 个月前
1.0.122025/07/171.3 年前
1.0.112025/07/121.3 年前
1.0.102025/07/121.3 年前
1.0.92025/04/201.6 年前
1.0.82025/03/101.7 年前

关于 @drizzle-adapter/neon-http 的常见问题

@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 和提交记录判断。