【发布时间】:2021-09-05 04:31:58
【问题描述】:
接下来使用 KeystoneJS,是否可以有 PostgresQL 视图?
这是我的问题:
我有两个表:[Aquirements] 和 [Sells],并且想要一个 [Inventory] 视图,我不想为它使用一个表。
接下来我使用 KeystoneJS,它使用 Prisma 来处理 PostgresQL 视图...
【问题讨论】:
标签: postgresql prisma keystonejs
接下来使用 KeystoneJS,是否可以有 PostgresQL 视图?
这是我的问题:
我有两个表:[Aquirements] 和 [Sells],并且想要一个 [Inventory] 视图,我不想为它使用一个表。
接下来我使用 KeystoneJS,它使用 Prisma 来处理 PostgresQL 视图...
【问题讨论】:
标签: postgresql prisma keystonejs
这是可能的,但目前相当老套。
KeystoneJS Next 在后台使用Prisma 进行数据库访问和迁移。除了 Keystone 列表架构之外,Prisma 还跟踪它自己的架构——Prisma 架构——它描述了您的数据模型。除此之外,Prisma Migrate(Prisma 工具之一)使用 Prisma Schema 来维护实际数据库的模式。在 Keystone 中,Prisma Schema 是从您的 Keystone 列表模式中自动生成的,因此您通常不需要注意它。同样,许多 Keystone CLI 命令(如keystone dev)在很大程度上依赖于 Prisma 功能。
Prisma 确实有 some limited support for views in Postgres,但是在使用时,它会阻止使用 Prisma Migrate。这反过来又打破了the keystone dev command。幸运的是,它实际上并没有阻止 Keystone 运行——keystone build 和 keystone start 应该可以正常工作。
如果您决定继续,您需要牢记以下几点:
keystone dev,或者至少不能在其当前状态下使用。根据您想要弄脏手的程度,这可能不是表演的终结者。如果你看一下这个函数,它实际上并没有那么复杂,它只是lines 40-54 导致了问题。如果您复制/重新实现此功能并删除了这些行,您可以在开发模式下运行 Keystone(维护您的 Prisma 架构),同时阻止 Prisma Migrate 尝试管理您的数据库。id 列——这只是 Keystone 所做的假设。ui: { createView: 'hidden', listView: 'read', itemView: 'read' } - 这告诉管理 UI 将列表视为只读。所以,就像我说的那样,现在可能但很老套。值得注意的是,Keystone Next 仍处于预览阶段,处于非常活跃的开发阶段。我相信这种情况会随着时间的推移而改善。
【讨论】: