В следующем коде я использую узел для ответа на запрос POST для изображений, которые я разместил в базе данных. Я пытаюсь l oop через несколько источников, получить URL-адреса изображений и ответить заполненным массивом URL-адресов изображений.
// Get pictures on current tag
getTagPhotos = (req) => {
let FileList = [];
fs.readdir(
`/psi-storage/tag-photos/${req.body.ENT}/${req.body.TagNo}/`,
function (err, files) {
if (err) {
throw err;
}
for (let j = 0; j < files.length; j++) {
FileList.push(
`url/assets/tag-photos/${req.body.ENT}/${req.body.TagNo}/${files[j]}`
);
console.log("1");
}
}
);
// Get pictures on restock tags
for (let i = 0; i < req.body.RstkTags.length; i++) {
if (
fs.existsSync(
decodeURI(
`/psi-storage/tag-photos/${req.body.ENT}/${req.body.RstkTags[i].number}/`
)
)
) {
fs.readdir(
`/psi-storage/tag-photos/${req.body.ENT}/${req.body.RstkTags[i].number}/`,
function (err, files) {
if (err) {
throw err;
}
for (let j = 0; j < files.length; j++) {
FileList.push(
`url/assets/tag-photos/${req.body.ENT}/${req.body.RstkTags[i].number}/${files[j]}`
);
console.log("2");
}
}
);
}
}
return FileList;
};
// Do nothing if entity storage file is not found
if (!fs.existsSync(decodeURI(`/psi-storage/tag-photos/${req.body.ENT}/`))) {
throw "No Entity Photos";
}
if (
fs.existsSync(
decodeURI(`/psi-storage/tag-photos/${req.body.ENT}/${req.body.TagNo}/`)
)
) {
let FileList = await getTagPhotos(req);
console.log("3");
console.log(FileList);
try {
res.status(200).json({
FileList,
success: true,
});
} catch (error) {
res.status(200).json({
error: error,
success: false,
});
}
}
});
У меня есть console.logs в том порядке, в котором я ожидаю, и мне нужно, чтобы код запускался для успешного выполнения, однако результат будет следующим:
3
[]
1
2
I Мне бы очень понравилось руководство о том, как заставить мою программу на самом деле ждать завершения цикла sh.