GraphQL不会返回结果(返回null)

时间:2017-03-28 00:36:26

标签: javascript json node.js api graphql

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

所以我知道它使用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,
});

1 个答案:

答案 0 :(得分:0)

我正在获取节点获取以在我的getLanguageByURL函数中返回错误的数据,我将响应转换为JSON,这很好但是在我做(json => json.language)之后就进入了json并要求一种语言"在我的对象数组中不存在的对象。我删除了这一行,我的查询完美无缺。