首页 > 解决方案 > 我的突变有什么问题?试图用graphql在对象之间建立简单的关系

问题描述

我很困扰。我有一个简单的例子,其中数据库模式中有两个对象。对象是区域和路线。一个区域可以有很多条路线。每条路线属于一个区域。我相信我的数据库模型很好,所以我不会分享。我认为我的错误出现在我的 typeDefs 中,我在其中创建了一个突变“addRoute”。在我开始之前,graphql 查询“区域”的期望结果看起来像这样(格式可能不正确)......

{
  "data": {
    "areas": [
      {
        "areaName": "Area A",
        "routes": [
          "routeName": "route 1"
        ]
      }
    ]
  }
}

这是我的 typeDefs。是 addRoute 突变的问题吗???

const { gql } = require('apollo-server-express');

const typeDefs = gql`
  type Area {
    _id: ID
    areaName: String!
    routes: [Route]!
  }

  type Route {
    _id: ID
    routeName: String!
  }

  type Query {
    areas: [Area]
  }

  type Mutation {
    addRoute(routeName: String, areaID: ID).   #IS THIS CORRECT?????
  }
`;

module.exports = typeDefs;

这是我的解析器。问题出在这里吗?

const { AuthenticationError } = require('apollo-server-express');
const { Area, Route } = require('../models');

const resolvers = {
    Query: {
        areas: async() => {
            return await Area.find().populate('routes');
        }
    },
    Mutation:{
        addRoute: async() => (parent, {routeName}) => {       #IS THIS CORRECT???
            const route = await Route.create({routeName})
        },
    }
}

最后,这是我在 GraphQL 本身中编写此查询的尝试。

mutation addRoute($routeName: String!, $areaID: ID!) {
    addRoute(routeName:$routeName, areaID:$areaID) {
      _id
      routeName
      areaID
  }
}

这是我对这个突变的查询变量。假设我有一个 ID 如下的现有区域...

{
  "routeName": "Route 1",
  "areaID": "61816788cd2c4a3514a9b06c"
}

我已尽我所能尽可能简化这个例子。

标签: graphqlapollo

解决方案


推荐阅读