gpt4 book ai didi

graphql - Prisma graphql 计算字段

转载 作者:行者123 更新时间:2023-12-04 14:20:51 25 4
gpt4 key购买 nike

我有这个数据模型:

type Item {
id: ID! @unique
title: String!
description: String!
user: User!
pictures: [Picture]
basePrice: Int!
addons: [Addon]
}

我正在编写一个名为 parsedItem 的查询,它从参数中获取 id 并查找 Item(使用 Prisma 生成的 Item 的默认查询),如下所示:

 const where = { id: args.id };
const item = await ctx.db.query.item({ where },
`{
id
title
...

我需要在前端显示一个计算值:“dynamicPrice”,它取决于 Item 拥有的 Addons 的数量。例如:Item #1 有 3 个插件,每个插件值(value) 5 美元。这个计算值应该是

dynamicPrice = basePrice + 3 * 5

插件关系可能会改变,所以我需要在前端发出的每个请求中计算它。

我非常想做这样的事情:

item.dynamicPrice = item.basePrice + (item.addons.length * 5)

并在解析器中返回此项目,但这不起作用。抛出一个错误:

"message": "Cannot query field \"dynamicPrice\" on type \"Item\"." (when I try to query the Item from the frontend)

这条错误消息让我思考:我应该将动态价格创建为数据模型上的一个字段吗?然后我可以在查询解析器中填充这个字段吗?我知道我可以,但这是一个好方法吗?

这是一个示例,我需要为此 Item 模型创建更多计算值。

这个简单用例的最佳可扩展解决方案/解决方法是什么?

最佳答案

您需要为Item 类型的dynamicPrice 字段创建字段解析器。它看起来像这样:

const resolvers = {
Query: {
parsedItem: (parent, args, ctx, info) => {
...
}
...
},
Item: {
dynamicPrice: parent => parent.basePrice + parent.addons.length * 5
}
}

您可以在 A Guide to Common Resolver Patterns 找到更多详细信息.

关于graphql - Prisma graphql 计算字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55032153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com