약속을 사용하여 forEach 루프 다음에 값을 반환하는 방법을 알아야합니다. 이 순간에, 때 내 주를 시작, 내가 얻을 :약속을 사용하여 forEach 루프 다음에 값을 반환하는 방법은 무엇입니까?
[ Promise { <pending> }, Promise { <pending> } ]
(내 sampleidlist 만 2 개 레코드를 포함) 이 내 코드입니다 : 어떤 제안
MongoClient.connect("mongodb://127.0.0.1/myproject", function(err, db) {
return db.collection('RUN').find({
"idRun": query.idRun
}).toArray()
.then((out) => {
var sampleidlist = out[0].SAMPLE_ID
var pazlist = []
// Promisearr is the array of promises where I try to push the promises
var Promisearr = []
// there is the function find_paz that return idPaz for every sampleId in sampleidlist
function find_paz(sampleid) {
// I return a new Promise for every sampleId
// I want to create an array of idPaz
return new Promise((resolve, reject) => {
db.collection('PATIENTS').find({
"SAMPLE_ID": sampleid
}).toArray()
.then((pazArr) => {
var singlepaz = []
singlepaz.push(pazArr[0].idPaz)
return singlepaz
})
.then((singlepaz) => {
pazlist.push(singlepaz)
})
})
}
// Here the forEach loop
sampleidlist.forEach(sampleid => {
Promisearr.push(
find_paz(sampleid)
)
})
Promise.resolve(Promisearr)
.then(Promise.all(Promisearr))
.then(value => {
// value return {promise<pending>}
// I want that value is the array of idPaz
console.log(value)
}).catch((err) => {
console.log('errored', err);
})
}).catch((err) => {
console.log('errored', err);
})
})
? 대단히 감사합니다.
[비동기 호출의 응답을 반환하는 방법은 무엇입니까?] (https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous -call) – Liam
'find_paz'에서 각 약속을 해결하거나 거절해야하며 약속 배열에서만'Pomise.all()'을 사용해야합니다 – charlietfl