繁体   English   中英

嵌套对象graphql / mongoose的架构/解析

[英]Schema/Resolve for nested objects graphql/mongoose

我正在将graphql与猫鼬一起使用,并且尝试访问这种形式的json中的嵌套对象数组:

"Plans": [
{
  "id": ...
  "name": ...
  "frequency": ...
  "lastExecuted": ...
  "Steps": {
    "Step": [
    {
      "id": ...
      "shortDescription": ...
      "description": ...
      ...
    },
    {...],
}

我创建了一个猫鼬模型:

const PlanModel = Mongoose.model("Plan", {
  name: String,
  frequency: GraphQLString,
  lastExecuted: String,
  Steps: []
})

直观地讲,我会将Stepmodel插入到数组中,但这给了我一个错误。

因此,我尝试使用解析器填充数组:

    Plans: {
  type: GraphQLList(PlanType),
  args: getGraphQLQueryArgs(PlanType),
  resolve: (root, args, context, info) => {
    return PlanModel
    .find()
    .populate("Steps")
    .populate("Steps.Step")
    .exec();
  }
},

这是我的PlanType:

const PlanType = new GraphQLObjectType({
  name: 'Plan',
  fields: () => ({
    id: {
      type: GraphQLID
    },
    name: {
      type: GraphQLString
    },
    frequency: {
      type: GraphQLString
    },
    lastExecuted: {
      type: GraphQLString
    },
    maintenanceSteps: {
      type: GraphQLList(StepType)
    },
  })
})

在这种情况下,我的GraphQL查询返回一个空数组。 我知道这是一个普遍的问题,但是我找不到解决方案

我的问题的解决方案是添加另一种类型:

const StepsType = new GraphQLObjectType({
  name: 'Steps',
  fields: () => ({
    Step: {
      type: GraphQLList(StepType)
    }
  })
})

const PlanType = new GraphQLObjectType({
  name: 'Plan',
  fields: () => ({
    _id: {
      type: GraphQLID
    },
    id: {
      type: GraphQLString
    },
    name: {
      type: GraphQLString
    },
    frequency: {
      type: GraphQLString
    },
    lastExecuted: {
      type: GraphQLString
    },
    status: {
      type: GraphQLString
    },
    Steps: {
      type: StepsType
    },
  })
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM