3 가지 다른 약속의 데이터를 nodejs의 렌더링 함수에 전달하여 pug와 함께 사용하고 싶습니다.다중 약속을 노드 JS로 전달
var promise = require('promise');
var statusChart = new promise(function (resolve, reject) {
a.aggregate(
[
{
$group: {
_id: '$status',
count: {$sum: 1}
}
}
], function (err, status) {
if (err) {
console.log(err);
reject(err);
} else {
resolve(status);
}
});
});
var severityChart = new promise(function (resolve, reject) {
a.aggregate(
[
{
$group: {
_id: '$severity',
count: {$sum: 1}
}
}
], function (err, vuln) {
if (err) {
console.log(err);
reject(err);
} else {
resolve(vuln);
}
});
})
var countChart = new promise(function (resolve, reject) {
a.count(function (err, count) {
if (err) {
console.log(err);
reject(err);
} else {
resolve(count);
}
});
})
statusChart.then((message) => {
console.log(message);
});
severityChart.then((data) => {
console.log(data);
});
countChart.then((item) => {
console.log(item);
});
위의 코드는 잘 작동하고 내 결과
[ { _id: 'Medium', count: 6 },
{ _id: 'High', count: 15 },
{ _id: 'Low', count: 1 } ]
[ { _id: 'New', count: 1 },
{ _id: 'Closed', count: 1 },
{ _id: 'In Progress', count: 11 },
{ _id: 'Pending', count: 9 } ]
22
질문
반환합니다 내가 렌더링 기능이 데이터를 전달 할 방법을.res.render ('그래프', {info : statusChart, vuln : severityChart, count : countChart}));
나는이 방법을 시도 할 때 내가 얻을 퍼그 측
var에 결과 = { "_77"에 다음과 같은 결과 : 1, "_ 83": 0, "_ 18"널 (null), "_ 38": { "onRejected": null, "promise": { "_ 75": 0, "_ 83": 0, "_18": null, "_ 38": null}}}; var status = { "_75": 1, "_ 83": 0, "_18": null, "_ 38": { "onRejected": null, "promise": { "_ 75": 0, "_ 83": 0 , "_ 18": null, "_ 38": null}}}; var total = { "_75": 1, "_ 83": 0, "_18": null, "_ 38": { "onRejected": null, "promise": { "_ 75": 0, "_ 83": 0 , "_ 18": null, "_ 38": null}}};
사용'Promise.all'를 수행 할. – Bergi
당신은 정말해야 id를 취하는 헬퍼 함수를 작성해,'new Promise' 및'a.aggrate'를 호출 해, 결과에 대한 약속을 돌려줍니다 – Bergi