当前位置: 首页 > 知识库问答 >
问题:

Apollo:从远程模式扩展类型

艾浩广
2023-03-14

目前,我有多个运行Apollo的GraphQL服务,并创建了一个“网关”服务,该服务使用远程模式拼接,以便为我提供一个单一的访问endpoint。

在我的网关服务中,我希望扩展远程类型,以便在缝合的架构之间创建引用。

const linkTypeDefs = `
    extend type User {
        profile: Profile
    }

    extend type Profile {
        user: User
    }`;

const schema = mergeSchemas({
    schemas: [userSchema, profileSchema, linkTypeDefs],
    resolvers: /* Resolvers */
});

然而,我似乎得到了以下错误:

GraphQLError:无法扩展类型"User",因为它不存在于现有架构中。

我进行了双重检查,并且类型“User”和“Profile”存在,我可以从网关图形ql查询它们。

为了扩展从远程模式合并的类型,我需要采取哪些特定步骤?

共有1个答案

古扬
2023-03-14

我最终解决了这个问题,意识到userSchemaprofileSchema都返回了一个promise。

我等待这些返回值,这为我解决了问题。

 类似资料:
  • 我正试着把a类扩展成AX类。所以,我也扩展了abuilder。但是,虽然我能够使用以下方法创建类a的对象: 同样的方法对AX不起作用。当我尝试这样做时:

  • 在设计和开发扩展包时,我们总是希望扩展包在我们给予一定的输入时,完成特定的工作并返回结果。这个过程可以由以下几种工作模式来完成: 入口程序完成全部工作 如果我们的插件不需要任何用户输入,而且只要一次性的执行一些主进程逻辑,我们可以将所有工作放在 main.js 的 load 生命周期回调里: // main.js module.exports = { load () { let fs

  • 为什么要扩展mongoose模型? 我们对业务进行分层处理 service(多模型操作) -> dao(单一模型操作) -> model(模型定义) 所以我们在dao层需要很多单一模型的数据库操作方法的封装,如果业务非常复杂,比如一个超级查询方法,然后又有各种具体业务定义方法,难道我们一个一个的都写在dao层么? 事实上dao只做暴露给service的方法,而具有一定业务约定的方法是可以放到mo

  • 我对文档模式的定义如下:

  • 问题内容: 我怎样才能做到这一点: 另外,我想知道这种方法是否可行,因为我已经在类中创建了菜单,即ControlMenu,并且在其他活动中继续进行扩展。 问题答案: 你只能扩展一个类。并从许多来源实现接口。 扩展多个类不可用。我能想到的唯一解决方案不是继承任何一个类,而是每个类都有一个内部变量,并通过将对你对象的请求重定向到你希望它们去的对象来做更多的代理。 这是我想出的最好的解决方案。你可以从这

  • 扩展 扩展是一种十分强大的机制,可以让你在不用继承的情况下,给已存在的类、结构体或者枚举类添加一些新的功能。最重要的一点是,你可以在你没有访问权限的情况下扩展已有类。这意味着你甚至可以扩展 Cocoa 的类,比如 UIView 或者 UIImage 。 举个例子,在编译时新加的方法可以像扩展类的正常方法一样执行。这和装饰器模式有点不同,因为扩展不会持有扩展类的对象。