You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB Realm GraphQL:如何在自定义解析器中返回多类型自定义负载

解决MongoDB Realm GraphQL自定义解析器返回多类型混合结构的问题

我完全理解你遇到的困境——MongoDB Realm的自定义解析器默认在定义返回负载时确实限制较多,没法直接引用已有的集合类型来构建混合结构,但通过**自定义类型(Custom Type)**的方式,完全可以实现你需要的两种场景:

场景1:返回包含多集合数组的对象({shirts: [Shirts], trousers: [Trousers], shoes: [Shoes]})

这种情况的核心是先在Realm Schema中定义一个包装类型,把多个集合数组字段整合进去:

  1. 创建自定义类型
    登录Realm控制台,进入你的应用的Schema页面,点击Add a Custom Type,命名为ClothingBundle(或者你喜欢的名称)。
    给这个类型添加三个字段:

    • shirts:类型选择Array,然后在Linked Type下拉菜单中选择你的Shirts集合类型
    • trousers:同理,选择Array并关联到Trousers集合类型
    • shoes:关联到Shoes集合类型
  2. 创建关联的自定义解析器
    进入GraphQL -> Custom Resolvers页面,点击Create Resolver:

    • 设置Resolver的名称(比如getClothingBundle)
    • 返回类型选择你刚创建的ClothingBundle
    • 在解析器函数中,分别查询三个集合的数据并组装成对应结构返回,示例代码(JavaScript):
      exports = async function() {
        const db = context.services.get("mongodb-atlas").db("your-database-name");
        
        // 并行查询三个集合的数据
        const [shirts, trousers, shoes] = await Promise.all([
          db.collection("Shirts").find().toArray(),
          db.collection("Trousers").find().toArray(),
          db.collection("Shoes").find().toArray()
        ]);
        
        return {
          shirts,
          trousers,
          shoes
        };
      };
      

场景2:返回混合标量与数组的对象({shirts: [Shirts], isFoo: Boolean})

思路和场景1一致,只是自定义类型包含标量字段:

  1. 创建自定义类型
    新建一个自定义类型(比如ShirtsWithFlag),添加两个字段:

    • shirts:Array类型,关联到Shirts集合
    • isFoo:Boolean类型
  2. 编写解析器
    创建对应Resolver,返回类型选择ShirtsWithFlag,函数中查询Shirts数据并添加布尔字段:

    exports = async function() {
      const db = context.services.get("mongodb-atlas").db("your-database-name");
      const shirts = await db.collection("Shirts").find().toArray();
      
      // 根据业务逻辑设置isFoo的值
      const isFoo = true;
      
      return {
        shirts,
        isFoo
      };
    };
    

额外提示

  • 如果你需要更灵活的临时结构(不追求严格类型检查),也可以将解析器的返回类型设置为JSON,这样可以返回任意结构,但会失去GraphQL的类型安全优势,不推荐在生产环境使用。
  • 自定义类型创建后,Realm会自动将其加入GraphQL Schema中,你可以在GraphQL页面的Schema标签中查看生成的类型定义,确保结构符合预期。

内容的提问来源于stack exchange,提问作者Pinkney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 08:07:35