首页 > 解决方案 > 需要帮助来调试此 updateLink 解析器

问题描述

我需要为我的 graphQL 服务器实现一个 updateLink,但它不断抛出“id is not defined”错误。服务器还没有数据库,只有一个用于练习目的的数组。

我已经为更新定义了突变的模式,还编写了解析器,但它只是没有用。我查看了阿波罗文档,看来我的解析器和架构是正确的。

以下是解析器

 updateLink:(parent,args)=>{
            const link = {  
                id:args.id,              
                description:args.description,
                url:args.url,
            }
            links[Number(id)]=link
            return link
        }
    },

以下架构


type Query {
  info: String!
  feed: [Link!]!
  link(id:ID!):Link
}

type Mutation {
  post(url: String!, description: String!): Link!
  updateLink(id:ID!,url:String!, description: String!): Link
  delete(id:ID!):Link
}

type Link {
  id: ID!
  description: String!
  url: String!
}

预期的结果应该是更新链接数组的服务器,但我得到了以下错误。

{
  "data": {
    "updateLink": null
  },
  "errors": [
    {
      "message": "id is not defined",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "updateLink"
      ]
    }
  ]
}

标签: graphql-js

解决方案


您引用了一个在此处调用的变量id

links[Number(id)]=link

但正如错误所示,您尚未定义具有该名称的变量。我建议在你的项目中添加一个 linter 来帮助你捕获这样的错误。


推荐阅读