用于 graphql 和 prisma 查询的嵌套解析器
Nested resolver for graphql & prisma query
谁能建议如何着手创建嵌套解析器以显示通过 graphql 保存在父对象中的对象数组。
在这种情况下,我的 schema.prisma 文件 有两个模型 GiftCard 和 Transaction,其中每个 GiftCard 都有一个分类账(交易数组):
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model GiftCard {
id Int
number String
ledger Transaction[]
}
model Transaction {
id Int
value Decimal
giftCard GiftCard? @relation(fields: [giftCardId], references: [id])
giftCardId Int?
}
我的 graphql 类型定义:
type Query {
cards: [GiftCard!]!
transactions: [Transaction!]!
}
type GiftCard {
id: ID!
number: String!
ledger: [Transaction!]!
}
type Transaction {
id: ID!
value: Float!
}
我的解析器:
export const resolvers = {
Query: {
cards: async (parent, args, context) => {
return context.prisma.GiftCard.findMany();
},
vendors: async (parent, args, context) => {
return context.prisma.Vendor.findMany();
},
transactions: async (parent, args, context) => {
return context.prisma.Transaction.findMany();
},
},
GiftCard: {
ledger: async (parent, args, context) => {
// return transaction associated with gift card here...
},
},
};
如果我在没有请求“分类帐”字段的情况下查询卡或交易,则查询从 apollo studio 完美运行。
任何帮助都会很棒!
谢谢。
好消息!在 prisma 文档中我找到了解决方案,它不是嵌套的解析器。
Prisma 在解析器内部默认不启用相互关系。你必须强制它包含它们,这样我的解析器现在看起来像这样,我的所有交易都显示在 graphql 查询中:
export const resolvers = {
Query: {
cards: async (parent, args, context) => {
return context.prisma.GiftCard.findMany({
include: { ledger: true },
});
},}
谁能建议如何着手创建嵌套解析器以显示通过 graphql 保存在父对象中的对象数组。
在这种情况下,我的 schema.prisma 文件 有两个模型 GiftCard 和 Transaction,其中每个 GiftCard 都有一个分类账(交易数组):
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model GiftCard {
id Int
number String
ledger Transaction[]
}
model Transaction {
id Int
value Decimal
giftCard GiftCard? @relation(fields: [giftCardId], references: [id])
giftCardId Int?
}
我的 graphql 类型定义:
type Query {
cards: [GiftCard!]!
transactions: [Transaction!]!
}
type GiftCard {
id: ID!
number: String!
ledger: [Transaction!]!
}
type Transaction {
id: ID!
value: Float!
}
我的解析器:
export const resolvers = {
Query: {
cards: async (parent, args, context) => {
return context.prisma.GiftCard.findMany();
},
vendors: async (parent, args, context) => {
return context.prisma.Vendor.findMany();
},
transactions: async (parent, args, context) => {
return context.prisma.Transaction.findMany();
},
},
GiftCard: {
ledger: async (parent, args, context) => {
// return transaction associated with gift card here...
},
},
};
如果我在没有请求“分类帐”字段的情况下查询卡或交易,则查询从 apollo studio 完美运行。
任何帮助都会很棒!
谢谢。
好消息!在 prisma 文档中我找到了解决方案,它不是嵌套的解析器。 Prisma 在解析器内部默认不启用相互关系。你必须强制它包含它们,这样我的解析器现在看起来像这样,我的所有交易都显示在 graphql 查询中:
export const resolvers = {
Query: {
cards: async (parent, args, context) => {
return context.prisma.GiftCard.findMany({
include: { ledger: true },
});
},}