问题标签 [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.

0 投票
0 回答
34 浏览

postgresql - 多对多,多字段 id

我有两张桌子,generic_articles并且translations

多篇文章可以有相同的名称,所以generic_article_name不是@unique,并且generic_article_name返回该名称的所有翻译,使其成为多对多关系。

我尝试遵循这个,但它没有成功,因为它需要参考@id,但generic_article_name它不是唯一的。

目前,我“假装”它是唯一的,然后我找到了重复项generic_article_name并将数据手动放到重复项上。

0 投票
3 回答
1139 浏览

node.js - Prisma.js:我们发现无法执行的更改

我在我的项目中使用了 prisma.js 作为 ORM。

执行后npx prisma migrate dev --name rename_and_add_some_columns,我得到了这个错误:

我们发现无法执行的更改

错误详情:

步骤 1 将所需列添加CategoryIdPost表中,但没有默认值。此表有 2 行,无法执行此步骤。• 步骤1 将所需列添加 ModifiedDatePost表中,但没有默认值。此表有 2 行,无法执行此步骤。• 步骤2 将所需列添加ModifiedDateProfile表中,但没有默认值。此表有 1 行,无法执行此步骤。• 步骤4 将所需列添加 ModifiedDateUser表中,但没有默认值。此表有 2 行,无法执行此步骤。

您可以使用 prisma migrate dev --create-only 创建迁移文件,并手动修改它以解决潜在问题。然后运行 ​​prisma migrate dev 来应用它并验证它是否有效。

我该如何解决?

// 这是我的 Prisma 模式文件,

0 投票
3 回答
839 浏览

javascript - 显式多对多关系棱镜

我有这 3 个棱镜模型,

这是一个多对多关系,一个用户可以有很多课程,一个课程可以有很多用户,为了引用明确的 mm 关系,我创建了另一个模型名称userOnCourse

我正在努力将 courseId 的引用传递到 userOnCourse 模型中,我想将课程与 userid 一起连接到该模型中,但是由于它是在运行时创建的,因此似乎无法在编译时传递 courseId。

这是代码,假设我们在创建课程时已经有了用户数据,如何传递已经在运行时创建的 courseId 并建立连接。

我正在关注 prisma 文档中的这个参考

0 投票
3 回答
2237 浏览

sql - prisma 按关系排序只有 _count 属性。不能按关系字段排序

考虑以下 Prisma 模式:

我想运行这样的查询,以便我得到一个按消息日期排序的对话列表,即首先有新消息的对话列表。

但是我现在可以查询的唯一方法就是这样,即关系_count以某种方式只有属性。

环境与设置

棱镜版本

谢谢你!

0 投票
1 回答
336 浏览

sql - 如何使用 Prisma 为 Postgres 进行 SQL 插入,条件是行数?

我正在尝试在数据库中插入一行,前提是 - 表中已经满足某些条件的行数小于某个阈值,例如 10。例如,在下面的模型中,我不想让一个项目拥有更多超过 10 个用户;所以count(projectId)应该小于 10:

在一般的 SQL 世界中,我会依赖事务与乐观并发控制,然后仅在读取匹配的行数后尝试插入project_id。由于 Prisma 不提供传统的长时间运行的事务,我被卡住了。我不能只是简单地先运行计数查询然后再进行插入,因为它本质上不是原子的。

如何使用 Prisma 处理这种情况?

0 投票
2 回答
592 浏览

graphql - 如何将数组作为参数传递给 Nexus?如何使用 Prisma 从这个数组创建多个对象?

我正在尝试学习一起使用 Prisma 和 Nexus。我希望有经验的人可以帮助我。

我想创建一个附有几张图片的帖子。

我的 Prisma 模型如下所示:

我需要编写一个 Nexus 突变,它可以接受带有标题、正文和图像 url 数组的帖子。我需要为每个网址创建一个图像记录,并将它们附加到帖子中。

你能帮我弄清楚如何正确地做到这一点吗?

  1. 我不知道如何将 json 对象数组传递给 args。有类似stringArg()or的东西intArg(),但是你如何接受一个数组?
  2. 创建一堆Image对象并将它们附加到的正确方法是Post什么?我应该有一个 for 循环并手动创建它们,然后以某种方式附加它们吗?或者,还有更好的方法?

你知道有没有人做这种事情的例子?

0 投票
0 回答
47 浏览

prisma - Prisma,删除具有外键错误的对象“无法提交更改:您尝试进行的更改将违反所需的关系”

我想要一个帖子附有几个文件。我的 Prisma 模型如下所示:

使用文件创建帖子工作正常,但是当我尝试在 Prisma Studio 中删除附有文件的帖子时,我收到以下错误:

在此处输入图像描述

你能帮我弄清楚发生了什么吗?

0 投票
0 回答
41 浏览

node.js - Prisma 2 过滤父对象和嵌套对象

如何处理 Prisma 2 中嵌套关系对象的可选过滤器?每次我尝试这样做时,我最终都会得到所有记录,不包括没有嵌套对象的记录。

0 投票
0 回答
661 浏览

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 混淆。

是否有解决此问题的方法来保持程序?这是一个消息传递应用程序,其中一些请求可能同时到达。

0 投票
2 回答
3740 浏览

node.js - 使用 Prisma.js 对数据库进行更改,而无需重置整个内容

如何在Prisma.js不必重置整个事物的情况下对数据库进行更改?

如果我使用过这个命令

我将丢失数据库中的所有数据,但不会丢失我的数据。

就我而言,我想更改String为文件String?schema.prisma

是否有适当的命令来避免丢失数据?