我试图创建一个基于微服务的应用程序,它使用两个在Docker中运行的远程Prisma/GraphQL模式和一个使用模式拼接进行内省的网关。
Prisma/GraphQL模式:
// Profile Schema service - http:localhost:3000/profile
type Profile {
id: ID!
user_id: ID!
firstName: String!
...
}
type Query {
findProfileById(id: ID!): Profile
findProfileByUserID(user_id: ID!): Profile
}
// User Schema service - http:localhost:5000/user
type User {
id: ID!
profileID: ID!
email: String!
...
}
type Query {
findUserById(id: ID!): User
findUserByProfileID(profileID: ID!): Profile
}
现在在Gateway服务器中,我能够成功地使用图形工具内省和合并模式,并且我添加了扩展类型来允许两种类型之间的关系
// LinkTypeDefs
extend type Profile {
user: User
}
extend type User {
userProfile: Profile
}
我按照阿波罗GraphQL留档模式拼接与远程模式,这是我现在合并模式的解析器
app.use('/gateway', bodyParser.json(), graphqlExpress({ schema: mergeSchemas({
schemas: [
profileSchema,
userSchema,
linkTypeDefs
],
resolvers: mergeInfo => ({
User: {
userProfile: {
fragment: `fragment UserFragment on User { id }`,
resolve(user, args, context, info) {
return delegateToSchema({
schema: profileSchema,
operation: 'query',
fieldName: 'findProfileByUserId',
args: {
user_id: user.id
},
context,
info
},
);
},
},
},
Profile: {
user: {
fragment: `fragment ProfileFragment on Profile { id }`,
resolve(profile, args, context, info) {
return delegateToSchema({
schema: authSchema,
operation: 'query',
fieldName: 'findUserByProfileId',
args: {
profileID: profile.id
},
context,
info
})
}
}
}
}),
})
}));
我遇到的问题是,每次我查询用户或个人资料的新扩展字段时,它总是返回null。我已经确保我已经创建了用户对象与现有的配置文件ID,同样与配置文件对象与现有的用户ID。这是查询结果的一个示例
我已经看了大约一个星期的文件了,似乎什么都没用。据我所知,一切都插好了。希望有人能帮忙。我觉得这和碎片有关。我可以提供一个用户和配置文件对象的屏幕截图,以便在需要时进行更多澄清。谢谢
我最终解决了这个问题,将委托ToSchema()更改为info.mergenfo.delegate()。这似乎起到了作用。
我没有尝试新更新的信息。合并信息。还没有授权给方案。如果更新后的版本有效的话,我会更新这篇文章,但现在这对我来说已经足够了。
希望这能帮助未来的人!
我有一个关于GraphQL模式拼接的问题。我有两个Graphql模式: 和 我现在尝试使用graphql工具的函数合并模式: 但不是我想要实现的(扩展用户类型): 结果是:type Name{firstname:String!lastname:String!} 在最终架构中只显示一个UserType。我尝试使用中的API来扩展Type,但没有得到任何结果。 有没有办法通过扩展冲突类型来合并模式?
Airbnb Clone - GraphQL Server Example with Prisma This project demonstrates how to build a production-ready application with Prisma and graphql-yoga. The API provided by the GraphQL server is the foun
我刚开始使用Prisma。以前,我主要使用firebase和mongodb来定义模式。 我正在尝试定义以下模式: 基本上,我想实现的是让用户能够投票给其他用户(给他们一个分数)。在MongoDB中,我将通过创建一个单独的集合来实现,如以下内容: 在这里,我只是将这些字段(from和for)指定为字符串,然后通过应用程序逻辑将它们与用户集合链接起来。 当然,在GraphQL Prisma中会有所不同
我正在查看用Scala编写GraphQL服务器的Sangria库。但奇怪的是,同一个类型系统必须实现两次:(1)作为GraphQL类型声明的一部分,(2)也是在服务器端,作为Scala case类,附带ObjectType、InterfaceType等。 在Scala中硬编码类型系统尤其令人厌烦,因为我的目的是能够CRUD任意形状的聚合,其中每个形状都被定义为类型的GraphQL集合。例如,假设S
我正在尝试创建一个GraphQL Spring Boot应用程序,以便在现有REST Web API之上创建一个GraphQL层,但在处理模式中的HashMap时遇到了问题。 类有一个名为的字段,它是HashMap。我试图将它定义为一个类型列表,这是一个键/值对,但我得到了以下错误: 这是我的架构文件: 还有我的模特班: 我找到了这个线程返回HashMap 模式: Servlet注册: pom.x