0
DB에서 데이터를 가져 와서 원하는 형식으로 변환하는 작은 데이터베이스 함수를 작성했지만 Express와 함께 표시하기 위해 데이터를 반환하는 데 어려움을 겪고 있습니다.함수에서 데이터를 반환하려면 어떻게해야합니까?
function getAllEvents(req, res, next) {
db.any('select * from sensors, events where sensors.sensorid = events.sensorid')
.then(function (data) {
var final = [];
data.forEach(function(datas){
if (!final[datas.sensorid]){
final[datas.sensorid] = {};
}
if (!final[datas.sensorid].name){
final[datas.sensorid].name = datas.name;
final[datas.sensorid].signatures = {};
}
if (!final[datas.sensorid].signatures[datas.signature]){
final[datas.sensorid].signatures[datas.signature] = {};
final[datas.sensorid].signatures[datas.signature].id = "sen" + datas.sensorid + "sig" + datas.signature;
final[datas.sensorid].signatures[datas.signature].signature = datas.signature;
final[datas.sensorid].signatures[datas.signature].message = datas.message;
final[datas.sensorid].signatures[datas.signature].events = {};
}
final[datas.sensorid].signatures[datas.signature].events[datas.eventid] = datas;
})
return final;
})
.catch(function (err) {
console.log("Something went wrong! ", err)
});
}
그리고 그것을 호출하는 라우터 기능이 있습니다 : 다음과 같이 데이터베이스 기능입니다
router.get('/events', function(req, res, next) {
db.getAllEvents(function(err, data){
res.render('events', { data: data });
});
});
나는 오류를 얻을 수 없지만으로하지만 라우터 기능은 데이터를 무한정 기다리고 생각 페이지가로드되지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
에 오류를 통과 당신에게 내가 잘못하고 있었는지의 설명을 주셔서 대단히 감사합니다. 오류 검사를 포함하여 제안한 변경 사항을 구현했습니다. 이것은 나에게 모두 새로운 것이므로 머리를 감싼다. 도와 주셔서 감사합니다! – Steve
약속은 콜백으로 변환하는 대신 올바르게 사용하는 방법을 이해하는 것이 가장 좋습니다. –