Drizzle <> Nile
This guide assumes familiarity with:
- 数据库 连接基础 与 Drizzle
- Nile 数据库 - 网站
- Drizzle PostgreSQL 驱动 - 文档
根据 官方网站,Nile 是为多租户应用重新设计的 PostgreSQL。
请查看官方 Nile + Drizzle 快速入门 和 **迁移 文档。
您可以使用 Nile 与任何 Drizzle 的 Postgres 驱动,我们将在下文中展示 node-postgres
的使用。
第一步 - 安装软件包
第二步 - 初始化驱动并进行查询
如果您需要提供现有的驱动:
连接到虚拟租户数据库
Nile 提供虚拟租户数据库,当您设置租户上下文时,Nile 会将您的查询定向到该特定租户的虚拟数据库,所有查询都将应用于该租户(即 select * from table
将仅返回该租户的记录)。
为了设置租户上下文,我们将每个查询包装在一个事务中,在运行事务之前设置适当的租户上下文。
可以将租户 ID 作为参数简单地传递给包装器:
如果您使用支持的 Web 框架,可以设置 AsyncLocalStorage 并使用中间件将其填充租户 ID。在这种情况下,您的 Drizzle 客户端设置将是:
然后,配置中间件以填充 AsyncLocalStorage,并在处理请求时使用 tenantDB
方法:
接下来是什么?