2017-09-01 7 views
0

私はnodejs(joshbalfour/node-cognitive-services)用にMicrosoft Cognitive Services APIを使用しています。私はドキュメンテーションの例に従ってコードを守ってきました。しかし私は、その応答が常に「未定義」であることを発見しました。コグニティブサービスmakeRequestは常に未定義を返します

face.listPersonGroups({ 
     parameters 
    }) 
    .then((response) => { 
     console.log('Got response:', response); //always undefined? 
    }) 
    .catch((err) => { 
     console.error('Encountered error making request:', err); 
    }); 

これは、makeRequestが実際にリクエストを行っているrepoからface.jsを呼び出しています。

return verifyParameters(operation, parameters) 
     .then(makeRequest({ 
      operation, 
      parameters, 
      API_KEY 
     })); 

私はapi.jsでコンソールに出力をログインした場合、私は、認知サービスAPI(200 OK)からの実際の応答を見ることができます。

const makeRequest = ({operation, parameters, body, API_KEY}) => { 
    let headers = { 
     'Ocp-Apim-Subscription-Key': API_KEY 
    }; 
    let path = operation.uriTemplate; 
    operation.parameters.forEach((param) => { 
     if (parameters[param.name] && param.type == 1){ 
      path = path.split(`{${param.name}}`).join(parameters[param.name]); 
      parameters[param.name] = undefined; 
     } 
    }); 

    let uri = `${operation.scheme}://${operation.host}/${path}`; 
    const options = { 
     uri, 
     method: operation.method, 
     headers, 
     qs: parameters, 
     json: true, 
     body 
    }; 
//if you output the response from 'rp' here we get the actual result (200 OK) 

    return rp(options); 

APIへの実際の呼び出しは正常ですが、値を返すことはできません。なぜ誰かが私のコントローラーの応答がいつも「未定義」であると説明できるのであれば、非常に役に立ちます。

+0

私はAPIコードにバグがあると思います。 (make_Request({operation、parameters、API_KEY})); 'は、' .then(return makeRequest({operation、parameters、API_KEY})) –

答えて

1

ありがとう@Maria Ines Parnisariあなたは正しい方向に私を指摘し、Iveはそれを解決しました。問題はAPIにあるようです。 Iveは関数を追加することで修正されました。単純にmakeRequestを返すとエラーになります。

 return verifyParameters(operation, parameters) 
     .then(function() { 
      return makeRequest({ 
      operation, 
      parameters, 
      API_KEY 
     })}); 
関連する問題