问题标签 [prisma]

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 回答
326 浏览

graphql - 在 prisma 中表示没有 id 的类型的最佳方法是什么?

数据模型.graphql

生成的类型(prisma.graphql):

在我的数据模型points中是必填字段,但在生成的棱镜类型points中是可选的?当我更新我的数据点时,以前的数据也会出现结果(https://github.com/prisma/prisma/issues/1657)..

我看到的解决方法是Json,但我们在 codegen 和 graphiql 中失去了类型安全性:(,

默认情况下, prisma 是否会在type没有id字段的情况下作为 Json 处理......?

0 投票
2 回答
998 浏览

postgresql - 将数据导入 Prisma / PostgreSQL 服务的最有效方法?

我有一个附加到 PostgreSQL 数据库的 Prisma (1.14.2) 服务正在运行。我需要通过 Prisma 连接器插入许多与 PostgreSQL 数据库具有一对多关系的节点。现在我正在通过以下方式执行此操作。和strokes数组samples包含很多节点:

在 128 个笔划和每个笔划 128 个样本(即总共 16348 个样本)的情况下,这大约需要 38 秒

我想知道是否有办法加快这个过程?特别是因为笔画和样本的数量可以变得更高。我可以使用prisma import ...,它显示了 6 倍的加速。但我想避免所需的转换为标准化数据格式 (NDF)

我读到了关于在 PostgreSQL中加速 INSERT 的文章,但我不确定是否以及如何将其应用于 Prisma 连接器。

0 投票
2 回答
1026 浏览

express - 使用来自突变解析器的 GraphQL Yoga 响应自定义 HTTP 代码

我正在使用 GraphQL Yoga 开发突变解析器,并将 Prisma 用于我的后端。突变用于进行身份验证并在成功登录时返回 JWT。突变目前看起来像这样:

如您所见,该算法相当简单:找到具有匹配名称的雇主,将存储的散列密码与使用 bcrypt 的传入密码进行比较,如果匹配则返回签名的 jwt。很标准的东西。

但是,在没有匹配的情况下,或者如果没有与该名称匹配的雇主,我想用 403 回复。在快递中,我只是这样做res.status(403).send({error: "No such username/password"}),但使用 GraphQL Yoga 我有点迷路并且不能查找有关如何执行此操作的任何文档。

感谢您对此进行整理或指出正确方向的任何回复:)

0 投票
1 回答
452 浏览

node.js - 如何在 dokku node.js 应用程序中运行 docker 命令?

我将 node.js 应用程序托管在数字海洋上并使用 dokku 进行部署。我需要docker-compose up -d在此应用程序中运行命令来启动数据库和 Prisma 服务器,如prisma docs中所述。

我尝试运行dokku run my-node-js-app "docker-compose up -d",但出现此错误:

我检查了,我docker-compose.yml的项目中有文件。

0 投票
1 回答
179 浏览

graphql - 在客户端和服务器之间共享片段

我在我的 React/Apollo 应用程序中设置了一堆 graphQL 片段,但我真的需要在我的 Node 服务器上访问它们。

例如,在我的客户中,我正在尝试执行此查询,以获取所有相关Person实体Company

现在,我不能只传递info到我的服务器上的查询,因为context.db.query.person显然不会有“人”的密钥。

理想情况下,我可以去:

...但这不起作用,因为服务器没有片段。目前,我通过将大量的graphQL从客户端复制粘贴到应用程序来解决这个问题,但这是一个非常糟糕的解决方案。

有答案吗,还是一切都需要加倍?

0 投票
2 回答
858 浏览

graphql - 瑜伽graphql服务器+棱镜服务器:多租户

我正在使用 Prisma Server 和 Yoga GraphQL 为多租户数据库设置后端环境

为了管理多租户,我们选择使用 Prisma Server 的“env”(dev/stage/prod)来处理它。没关系,Prisma 服务器不难管理,现在我们为每个租户都有一个端点,例如:http://localhost:4466/service/tenant/

之后,很容易使用 graphql get-schema 从 Prisma 中提取 *.graphql。

但是现在,困难在于:如何为我需要的服务和租户设置一个 GraphQL 服务器?

基于不同的例子 / tuto / docs / ...我找不到在我的 index.js 中设置 GraphQL Server 的方法来说:监听多个 URI 并且每个 URI 都连接了一个 prisma 服务器。

例如,我需要:

GraphQL Server 端点http://localhost:4000/service-1/client-1/只能是请求http://localhost:4466/service-1/client-1/

而对于client-2(第二个租户)http://localhost:4000/service-1/client-2/只能是请求http://localhost:4466/service-1/client-2/

GraphQL Server 似乎每个端口只能启动一次(这里是 4000)

[编辑] 这里有一个代码来说明https://github.com/mouchimotte/prisma-yoga-multitenancy

0 投票
1 回答
1804 浏览

graphql - GraphQL Yoga 提供的为 Prisma 声明字段的正确方法,但在解析器中不需要

我一直试图在 Prisma 网站上找到一些关于此的文档,但老实说,在那里找到非常详细的用例有点困难,尤其是当问题像这个一样难以描述时。

我有这样的情况,我的前端向createPosting我的 GraphQL-Yoga 服务器上发送一个带有字段的突变请求positionTitle, employmentType, description, requirements, customId, expiresAt(我已经彻底测试过它是否按预期工作)。我想createdAt在 Prisma 服务上创建节点之前添加一个字段。

在我的 GraphQL-Yoga 服务器中,我有一个 datamodel.graphql,其中包括以下内容:

我的 schema.graphql 在 Mutations 下有这个:

最后在我的 createPosting 解析器中,我尝试像这样改变 Prisma 后端:

当我尝试从前端运行它时,我在服务器上收到以下错误:

Error: Variable '$_v0_data' expected value of type 'PostingCreateInput!' but got: {"customId":"dwa","postingTitle":"da","positionTitle":"da","employmentType":"PART_TIME","status":"UPCOMING","description":"dada","requirements":"dadada","expiresAt":"2018-09-27T00:00:00.000Z","createdAt":"2018-09-04T20:29:10.745Z","offeredBy":{"connect":{"name":"NSB"}}}. Reason: 'createdAt' Field 'createdAt' is not defined in the input type 'PostingCreateInput'.

从这个错误消息中,我假设我的 Prisma 服务由于某种原因不知道 createdAt,因为我最近添加了这个字段,但是当我在 Prisma 主机上的 GraphQL 操场中检查类型 Posting 和 PostingCreateInput 时,我发现字段 createdAt !在这两个地方。

我尝试删除生成的 prisma.graphql 并再次部署新文件,但这不起作用。当我检查 prisma.graphql 时,PostingCreateInput 确实错过了 createdAt 字段,即使 Prisma 服务器似乎有它。

如果有人可以为我指出错误的正确方向,或者让我更好地了解如何设置应该存储在数据库中但在我的瑜伽服务器中而不是在前端创建的变量,我会非常感激:)

虽然这个问题可能看起来有点具体,但我相信在创建节点之前应该可以在服务器上为字段创建数据的想法,但目前我正在努力思考如何去做。

TLDR;createdAt:DateTime在向我的 Prisma 服务发送创建请求之前,想要在解析器上的 GraphQL-Yoga 服务器上创建一个字段。

0 投票
2 回答
3652 浏览

javascript - 过滤掉打字稿中接口的不需要的对象属性

作为背景,我使用的是 Prisma (graphql)、mysql2 (nodejs) 和 typescript。

我正在使用交互式命令行脚本连接到 mysql2。

这是我看到的警告:

忽略传递给 Connection: 类型的无效配置选项。这目前是一个警告,但在 MySQL2 的未来版本中,如果您将无效的配置选项传递给 Connection,则会引发错误

这就是我在 MysqlConnector 类中实例化 mysql2 的方式:

“connectionOptions”在类构造函数中设置:

这是我的类型定义:

这是我传递给 MysqlConnector 类的对象的类型定义:

因此,我传入了一个对象,该对象具有 mysql2 不需要/不需要的附加参数。我是打字稿的新手。在将对象传递给 MysqlConnector 类之前,我尝试了这个:

但是我收到一个错误,说“过滤器”不是“DatabaseCredentials”类型的属性,我得出结论这可能不是正确的方法。

我假设 Typescript 中有一种方法(通过 tsconfig)可以自动过滤掉不在接收类型中的属性。“MysqlConnectionDetails”在其定义中没有属性“类型”,因此当我传入另一种类型时,它会动态获取它。

0 投票
1 回答
100 浏览

subscription - 为什么 Subscription on Created 不适用于 Prisma?

我实现了一个简单的 Prisma 服务器。我的订阅与 UPDATED 和 DELETED 突变一起工作得很好,但它不适用于 CREATED 突变!谁能帮我?谢谢

0 投票
1 回答
97 浏览

authentication - (graphql,prisma)我如何在登录(登录)时忽略(通过)检查身份验证?

我在创建 graphql 服务器和检查身份验证时遇到问题。我使用 Prisma 自动创建了模式,并通过创建“signin”突变手动添加到模式中。我还添加了jwt检查(auth)中间件,如下代码所示:

问题是即使在登录完成后也会检查令牌。有没有办法在请求登录交互时不确认令牌,或者如果是这样,我该如何克服它?(客户端未登录时没有令牌是正确的吗?)