UnhandledPromiseRejectionWarning : 처리되지 않은 약속 거부 (거부 ID : 1) : 오류 : 헤더를 보낸 후 설정할 수 없습니다. 이 오류는 요청이 완료되기 전에 API를 계속 켜거나 API를 다시 때릴 때 발생합니다. 많은 솔루션을 추천했지만 적절한 answer.pls를 얻을 수 없습니다.(Nodejs + Restify) 헤더를 보낸 후 설정할 수 없습니다. 약속 거부 경고
exports.getRecords = function(req, res) {
db.task(t => {
return t.batch([
t.any(selectQuery),
t.any(recordCountQuery)
]);
})
.then(data => {
//create a formatted object based on the two queries with recordCount
var output = {};
output.meta = data[1][0];
let petData = data[0];
/*
* Checks If the pet details available and then processing the pets Data
* To get the existing image URL.
*/
if (!util.isNullOrUndefined(petData)) {
//Iterating over the Array of pets and process each pets with promises()
Promise.all(petData.map(pet => {
//Processing each pet
return processUtil.getvalidData(pet)
.then(pet => pet);
}))
.then(results => {
//After processing all the pets send the output
output.data = results;
res.json(output);
})
};
})
.catch(function(err) {
if (util.isError(err)) {
res.error('NotFoundError', err);
} // return 404
else {
res.error('InternalServerError', err);
}; //else 500
});
};
다음은 요청이 완료 도착하기 전에 우리가 두 번 API를 치는
"15" "TRACE" "services-data" "lynd-PC" "sr" "4596ec40" "" "GET" "/data/2" "request received"
"16" "TRACE" "services-data" "lynd-PC" "" "4596ec40" "" "GET" "/data/2" ""
"17" "TRACE" "services-data" "lynd-PC" "" "4596ec40" "" "GET" "/data/2" ""
"18" "TRACE" "services-data" "lynd-PC" "ss" "4596ec40" "200" "GET" "/data/2" "response sent"
응답 로그 하나의 히트에 대한
응답 로그 두 응답 콘솔 로그입니다.
"15" "TRACE" "services-data" "lynd-PC" "sr" "1a85afb7" "" "GET" "/data/2" "request received"
"15" "TRACE" "services-data" "lynd-PC" "" "1a85afb7" "" "GET" "/data/2" ""
"16" "TRACE" "services-data" "lynd-PC" "" "1a85afb7" "" "GET" "/data/2" ""
"17" "TRACE" "services-data" "lynd-PC" "ss" "1a85afb7" "500" "GET" "/data/2" "response sent"
"18" "TRACE" "services-data" "lynd-PC" "" "1a85afb7" "" "GET" "/data/2" ""
(node:3860) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Can't set headers after they are sent.
데이터베이스 란 무엇입니까? 'db.task()'와't.batch()'는 다중 호출이 동시에 실행될 때 완전히 안전합니까? – jfriend00