0
我正在爲nodejs(joshbalfour/node-cognitive-services)使用Microsoft Cognitive Services api。根據文檔示例,我遵循了代碼。但是我發現響應總是'未定義'。認知服務makeRequest總是返回undefined
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調用工作正常,但返回的值不是。如果有人能夠解釋爲什麼我的控制器中的響應總是'未定義',這將是非常有用的。
我認爲在api代碼中存在一個錯誤。 '.then(makeRequest({operation,parameters,API_KEY}));'should be'.then(return makeRequest({operation,parameters,API_KEY}));' –