数据库
数据库是任何动态应用的核心,提供存储、检索和管理数据所需的基础设施。TanStack Start 让集成各种数据库变得简单,为管理应用的数据层提供了一种灵活的方式。
该用什么?
TanStack Start 设计上适用于任何数据库服务商,所以如果你已经有偏好的数据库系统,可以用所提供的全栈 API 把它集成到 TanStack Start。无论你使用的是 SQL、NoSQL 还是其他类型的数据库,TanStack Start 都能满足你的需求。
在 TanStack Start 中使用数据库有多简单?
在 TanStack Start 中使用数据库,就像在 TanStack Start 服务器函数或服务器路由中调用你的数据库适配器/客户端/驱动/服务一样简单。
下面是一个如何连接数据库并读写它的抽象示例:
import { createServerFn } from '@tanstack/react-start'
const db = createMyDatabaseClient()
export const getUser = createServerFn().handler(async ({ context }) => {
const user = await db.getUser(context.userId)
return user
})
export const createUser = createServerFn({ method: 'POST' }).handler(
async ({ data }) => {
const user = await db.createUser(data)
return user
},
)这个例子显然是虚构的,但它说明:只要你能在服务器函数或服务器路由中调用某个数据库服务商,你就可以在 TanStack Start 中使用任何数据库服务商。
译者注:数据库访问一定放在服务端
数据库的凭据必须只存在于服务端。永远不要在客户端组件里直接连接数据库——客户端代码会暴露连接字符串。正确的做法是:在服务器函数(createServerFn)或服务器路由里做所有数据库操作,客户端通过类型安全的 RPC 调用它们。这样连接串只存在于服务器,客户端拿到的只是结果数据。
推荐的数据库服务商
虽然 TanStack Start 设计上适用于任何数据库服务商,但我们强烈建议考虑我们经过审核的合作伙伴数据库服务商 Neon 或 Convex。它们已经过 TanStack 审核,符合我们的质量、开放性和性能标准,都是你数据库需求的上佳之选。
什么是 Neon?
Neon 是一个完全托管的 serverless PostgreSQL,把存储和计算分离,提供自动扩缩、数据库分支、内置连接池和时间点恢复等能力。
译者注:什么是 serverless 数据库?
serverless(无服务器)数据库是指由云厂商托管、按需自动扩缩容的数据库服务:你不用自己维护数据库服务器,通常按用量计费,空闲时几乎不花钱,适合起步阶段和小规模项目。与之相对的是自托管数据库(自己部署维护 Postgres 等)。
什么是 Convex?
Convex 是一个 serverless 数据库平台,提供实时、可扩展、事务性的数据后端,让你无需手动管理数据库服务器或编写复杂查询。
什么是 Prisma Postgres?
Prisma Postgres 提供生产就绪的 Postgres 数据库,零配置、自动扩缩,并带有一个供团队检查和管理数据的 Web 界面。
文档与 API
集成不同数据库到 TanStack Start 的文档即将推出!与此同时,请关注我们的示例和指南,了解如何在整个 TanStack Start 应用中充分利用你的数据层。