微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过批处理相同类型从远程服务器加入模式

如何解决通过批处理相同类型从远程服务器加入模式

我是阿波罗服务器的新手,我非常努力地理解如何使远程模式成为一个巨大的方案,我能够加入模式并且现在可以查询数据,但是,我似乎无法链接/resolve 类型,我的两个微服务使用相同的类型名称来表示那些在任何地方都相同的类型,其中 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
    }
  }
}

那么即使 usernameemail 不在第一个架构中,它也可以通过身份验证架构中的 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',}
                        ]

                    },{
                schema: schemas['auth'],merge: {
                    UserType: {
                        entryPoints: [
                            {
                                fieldName: 'userById',]

                    }
                }
            }
        ],mergeTypes: true,});
};

就我而言,只是为了不混淆我将 schemas 设为字典的任何人,其中每个字典都是由它所链接的 API 命名的。还必须确保我在各自的端点中对所有 fieldName 进行了查询。感谢您查看这里的 guid https://www.graphql-tools.com/docs/stitch-type-merging 提供了很多帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。