问题标签 [prisma2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 多对多,多字段 id
我有两张桌子,generic_articles
并且translations
,
多篇文章可以有相同的名称,所以generic_article_name
不是@unique
,并且generic_article_name
返回该名称的所有翻译,使其成为多对多关系。
我尝试遵循这个,但它没有成功,因为它需要参考@id
,但generic_article_name
它不是唯一的。
目前,我“假装”它是唯一的,然后我找到了重复项generic_article_name
并将数据手动放到重复项上。
node.js - Prisma.js:我们发现无法执行的更改
我在我的项目中使用了 prisma.js 作为 ORM。
执行后npx prisma migrate dev --name rename_and_add_some_columns
,我得到了这个错误:
我们发现无法执行的更改
错误详情:
步骤 1 将所需列添加
CategoryId
到Post
表中,但没有默认值。此表有 2 行,无法执行此步骤。• 步骤1 将所需列添加ModifiedDate
到Post
表中,但没有默认值。此表有 2 行,无法执行此步骤。• 步骤2 将所需列添加ModifiedDate
到Profile
表中,但没有默认值。此表有 1 行,无法执行此步骤。• 步骤4 将所需列添加ModifiedDate
到User
表中,但没有默认值。此表有 2 行,无法执行此步骤。您可以使用 prisma migrate dev --create-only 创建迁移文件,并手动修改它以解决潜在问题。然后运行 prisma migrate dev 来应用它并验证它是否有效。
我该如何解决?
// 这是我的 Prisma 模式文件,
javascript - 显式多对多关系棱镜
我有这 3 个棱镜模型,
这是一个多对多关系,一个用户可以有很多课程,一个课程可以有很多用户,为了引用明确的 mm 关系,我创建了另一个模型名称userOnCourse。
我正在努力将 courseId 的引用传递到 userOnCourse 模型中,我想将课程与 userid 一起连接到该模型中,但是由于它是在运行时创建的,因此似乎无法在编译时传递 courseId。
这是代码,假设我们在创建课程时已经有了用户数据,如何传递已经在运行时创建的 courseId 并建立连接。
我正在关注 prisma 文档中的这个参考。
sql - prisma 按关系排序只有 _count 属性。不能按关系字段排序
考虑以下 Prisma 模式:
我想运行这样的查询,以便我得到一个按消息日期排序的对话列表,即首先有新消息的对话列表。
但是我现在可以查询的唯一方法就是这样,即关系_count
以某种方式只有属性。
环境与设置
棱镜版本
谢谢你!
sql - 如何使用 Prisma 为 Postgres 进行 SQL 插入,条件是行数?
我正在尝试在数据库中插入一行,前提是 - 表中已经满足某些条件的行数小于某个阈值,例如 10。例如,在下面的模型中,我不想让一个项目拥有更多超过 10 个用户;所以count(projectId)
应该小于 10:
在一般的 SQL 世界中,我会依赖事务与乐观并发控制,然后仅在读取匹配的行数后尝试插入project_id
。由于 Prisma 不提供传统的长时间运行的事务,我被卡住了。我不能只是简单地先运行计数查询然后再进行插入,因为它本质上不是原子的。
如何使用 Prisma 处理这种情况?
graphql - 如何将数组作为参数传递给 Nexus?如何使用 Prisma 从这个数组创建多个对象?
我正在尝试学习一起使用 Prisma 和 Nexus。我希望有经验的人可以帮助我。
我想创建一个附有几张图片的帖子。
我的 Prisma 模型如下所示:
我需要编写一个 Nexus 突变,它可以接受带有标题、正文和图像 url 数组的帖子。我需要为每个网址创建一个图像记录,并将它们附加到帖子中。
你能帮我弄清楚如何正确地做到这一点吗?
- 我不知道如何将 json 对象数组传递给 args。有类似
stringArg()
or的东西intArg()
,但是你如何接受一个数组? - 创建一堆
Image
对象并将它们附加到的正确方法是Post
什么?我应该有一个 for 循环并手动创建它们,然后以某种方式附加它们吗?或者,还有更好的方法?
你知道有没有人做这种事情的例子?
node.js - Prisma 2 过滤父对象和嵌套对象
如何处理 Prisma 2 中嵌套关系对象的可选过滤器?每次我尝试这样做时,我最终都会得到所有记录,不包括没有嵌套对象的记录。
mysql - Prisma 如何可靠地返回最后插入的行,我可以通过过程调用来模拟吗?
我在 Azure Function App 上使用 Prisma,因此它是无服务器的,只有一个 prisma 客户端(const prisma = new PrismaClient();),并且在给定函数运行后我不会关闭连接。
一开始我使用prisma.myTable.create({...
调用创建记录,其中响应是创建的行。从那我需要自动递增的 ID,在其他表中进行查询。
随着项目的进展,我得到了一个 MySQL 过程调用,它在表中创建了正确的条目。它有助于减少我这边对某些变量的需求,但引入了一个可靠地获取创建的行 id 的新问题。我这样调用程序:
我们尝试了 2 种方法。一个是会话变量,现在我明白它为什么失败了。
如果多个请求同时到达,则响应有时包含相同的 id。我相信这是意料之中的,因为我只有一个会话,而且似乎即使我做了 2 次插入,仍然从会话中取回之前的 @id。
第二种方法是在不同的表中跟踪 id。插入后读取该表并删除该行。我尝试在delete()
不查询的情况下使用 prismas,因为这也会返回已删除的行。以缓慢的速度它也在工作,但是几乎同时有多个我遇到了一个错误,没有什么可删除的。(该表中还有另一个标识符用于选择该行)。我得到错误:
一项操作失败,因为它依赖于一个或多个需要但未找到的记录。要删除的记录不存在。
看起来,顺序是插入、插入、删除,但第二次删除失败,因为表是空的。
迄今为止最安全的解决方案是await prisma.$transaction([...
用于插入和删除该行,但在这种情况下,我得到了错误:
代码:1213,消息:“尝试获取锁定时发现死锁;尝试重新启动事务”,状态:“40001”
它至少是一致的,所以没有 id 混淆。
是否有解决此问题的方法来保持程序?这是一个消息传递应用程序,其中一些请求可能同时到达。
node.js - 使用 Prisma.js 对数据库进行更改,而无需重置整个内容
如何在Prisma.js
不必重置整个事物的情况下对数据库进行更改?
如果我使用过这个命令
我将丢失数据库中的所有数据,但不会丢失我的数据。
就我而言,我想更改String
为文件String?
schema.prisma
是否有适当的命令来避免丢失数据?