graphql - 通过批处理相同的类型从远程服务器加入模式
问题描述
我是阿波罗服务器的新手,我正在努力理解如何将远程模式变成一个庞大的方案,我能够加入模式并且现在可以查询数据,但是,我似乎无法链接/解决类型,我的两个微服务对那些在任何地方都相同的类型使用相同的类型名称,pk
并且在所有这些类型中都很常见,只有一个只有一个pk
,另一个有一些额外的字段,我的商店模式看起来像这样
type UserType implements Node {
id: ID!
shops: [ShopType]
pk: Int
}
真正重要的是pk
在这种情况下,因为它假设加入我的身份验证模式,看起来像这样
type UserType implements Node {
id: ID!
username: String
email: String
pk: Int
}
有这么多其他字段,我希望能够在 appolo 服务器中加入这两个字段的数据字段,因为这是我合并我的两个模式的地方,这样当我查询时
{
shops {
shopOwner {
username
email
}
}
}
然后即使username
andemail
不在第一个模式中,它也可以通过pk
身份验证模式解析这些字段
我用过这样的东西
const createNewSchema = async () => {
const schemas = await createRemoteExecutableSchemas();
return mergeSchemas({
schemas,
});
};
加入我的模式,那么我什至如何让两者按照我的意愿一起工作?提前非常感谢
解决方案
我能够让它工作,我用过stitchschemas
,它看起来像这样
const createNewSchema = async () => {
const schemas = await createRemoteExecutableSchemas();
return stitchSchemas({
subschemas: [
{
schema: schemas['shop'],
merge: {
UserType: {
entryPoints: [
{
fieldName: 'shopOwnerById',
selectionSet: '{ pk }',
args: originalObject => ({ pk: originalObject.pk }),
},
{
fieldName: 'shopById',
selectionSet: '{ pk }',
args: originalObject => ({ pk: originalObject.pk }),
}
]
},
},
}, {
schema: schemas['auth'],
merge: {
UserType: {
entryPoints: [
{
fieldName: 'userById',
selectionSet: '{ pk }',
args: originalObject => ({ pk: originalObject.pk }),
},
]
}
}
}
],
mergeTypes: true,
});
};
在我的情况下,只是为了不混淆我制作的schemas
字典,其中每个字典都是它链接到的 API 的名称。还必须确保我对fieldName
我各自的端点中的所有 's 进行了查询。感谢您查看这里的 guid https://www.graphql-tools.com/docs/stitch-type-merging帮助很大
推荐阅读
- mysql - Setting rank based on query
- nginx - 允许不在使用 10.0.0.1 的新路由器上工作
- c++ - “深度”模板参数推导可行吗?
- c - 计数排序显示奇怪的行为
- java - 如何编译存储在字符串中的 Java 类,或者使用给定输入的路径?
- r - 无法在 r studio 中安装
- java - 布尔值已更改但 if 语句无法识别
- python - 从 Instagram 中提取关注者数量
- c# - 如何从 .cshtml 页面中的按钮调用控制器中的函数?
- javascript - 使用 on-Clickfun 从 div class="overlay" 链接到另一个页面