【问题标题】:GraphQL wont return results (returns null) [duplicate]GraphQL 不会返回结果(返回 null)[重复]
【发布时间】:2023-04-08 03:02:01
【问题描述】:

当我在 graphqli 中输入随机数时,我在 api 日志中看到 message: 'Cast to ObjectId failed for value "58d" at path "_id" for,以下代码创建查询并与我的 API 交互。

所以我知道它使用 node-fetch 访问 API,但不知道为什么它没有返回我的名字。我正在使用:

{
  language(id:"58d80f843ad415941d8f908b"){
    name
  }
}

我已经用 mongoose 和 NodeJS 构建了我的 API。有人可以帮忙吗:(

var fetch = require('node-fetch');
var { GraphQLSchema } = require('graphql');
var { GraphQLObjectType } = require('graphql');
var { GraphQLString } = require('graphql');

var BASE_URL = "http://localhost:3030";

function getLanguageByURL(relativeURL){
  return fetch(`${BASE_URL}${relativeURL}`)
     .then(res => res.json())
     .then(json => json.language)
}
var LanguageType = new GraphQLObjectType({
  name: 'Language',
  description: '...',

  fields: () => ({
    name: {type: GraphQLString},
  }),
});


var QueryType = new GraphQLObjectType({
  name: 'Query',
  description: '...',

  fields: () => ({
    language: {
        type: LanguageType,
        args: {
            id: {type: GraphQLString},
        },

        resolve: (root, args) => 
            getLanguageByURL(`/languages/${args.id}`)
    }
  }),
});

module.exports.schema = new GraphQLSchema({
  query: QueryType,
});

【问题讨论】:

  • 您提供的id 不是有效的mongodb ObjectId,并更新解析器,我猜您将id 按值传递给_id,所以它抛出了一个error。 !在 Q 中添加解析器!

标签: javascript json node.js api graphql


【解决方案1】:

我让 node-fetch 在我的 getLanguageByURL 函数中返回错误的数据,在该函数中我将响应转换为 JSON,这很棒,但在我执行 (json => json.language) 之后,它正在进入该 json 并要求一个我的对象数组中不存在的“语言”对象。我删除了这一行,我的查询完美无缺。

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 2019-06-24
    • 1970-01-01
    • 2020-02-02
    • 2019-06-28
    • 2019-03-08
    • 2020-04-05
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多