认知服务makeRequest始终返回undefined

时间:2017-09-01 20:34:49

标签: node.js return microsoft-cognitive

我正在为nodejs(joshbalfour / node-cognitive-services)使用Microsoft Cognitive Services api。我按照文档示例跟踪了代码。但是我发现响应总是“未定义”。

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

这是从repo调用face.js,makeRequest实际上正在发出请求。

  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的实际调用工作正常,但返回值不是。如果有人能够解释为什么我的控制器中的响应始终是“未定义的”#39;这将非常有帮助。

1 个答案:

答案 0 :(得分:1)

谢谢@Maria Ines Parnisari,你指出了我正确的方向,我已经解决了它。看起来问题与API有关。我通过添加一个函数来修复.then只是返回makeRequest给出一个错误。

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