2017-03-28 15 views
0

graphqliに乱数を入力すると、次のコードでクエリを作成し、APIと対話します。message: 'Cast to ObjectId failed for value "58d" at path "_id" forがapiログに記録されます。GraphQLは結果を返しません(nullを返します)

私はノードフェッチを使ってAPIを打つことを知っていますが、なぜ私の名前を返さないのかわかりません。私が使用しています:

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

私はマングースやNodeJSと私のAPIを構築しています。誰かが私は偉大であるJSONに応答を変換しましたが、私は(json => json.language)をしていた直後に起こった私のgetLanguageByURL機能で誤ったデータを返すために、ノードは、フェッチなっていた:(

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, 
}); 
+0

あなたが提供している 'id'は有効なmongodb' ObjectId'レゾルバを更新すると、 'id 'を' _id'に渡していると思いますので、 'error'を投げています!Qにリゾルバを追加してください! –

答えて

0

を助けてくださいそのjsonと私のオブジェクトの配列に存在しなかった "言語"オブジェクトを要求します。私はこの行を削除し、私のクエリは完全に動作します。

関連する問題