我正在为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;这将非常有帮助。
答案 0 :(得分:1)
谢谢@Maria Ines Parnisari,你指出了我正确的方向,我已经解决了它。看起来问题与API有关。我通过添加一个函数来修复.then只是返回makeRequest给出一个错误。
return verifyParameters(operation, parameters)
.then(function () {
return makeRequest({
operation,
parameters,
API_KEY
})});