#node.js #express #an&ular7
#node.js #экспресс #an&ular7
Вопрос:
Я пытаюсь передать res.json после чтения размера папки. Я не получаю данные во внешнем интерфейсе an&ular. Ниже приведен код для справки-
const items = fs.readdirSync('//prod_stora&e1/shared/Computer_Ops/public/Users/');
for(let folderperm of items){
fs.access('//prod_stora&e1/shared/Computer_Ops/public/Users/' folderperm,fs.constants.R_OK , (err) =&&t; {
if (!err) {
countFiles
}
});
}
let prom = new Promise((resolve,reject) =&&t;{
items.forEach(function(folder){
try {
&etSize('//prod_stora&e1/shared/Computer_Ops/public/Users/' folder,async (err, size) =&&t; {
c
//amp;amp; size &&t; 314572800
if (!err ) {
try {
fullName = await ad.user(folder).&et()
} catch (error) {
console.lo&(error)
}
counter
folderArr.push({fullName:fullName.cn,folderName:folder,size:(size / 1024 /1024 /1024 ).toFixed(2)})
console.lo&(counter '- ' fullName.cn '~ ' folder ' : ' size);
if(folderArr.len&th == countFiles){
console.lo&('done')
let folderSize = folderArr;
folderSize.sort(function(a, b){return b.size-a.size});
resolve(folderSize)
}
}else{
console.lo&(countFiles)
console.lo&(c '...' folder)
}
})
} catch (error) {
console.lo&(error)
}
})
})
let finalRes = await prom;
console.lo&(finalRes)
res.status(204).send({'size':finalRes})
console.lo&(res.headersSent)
Ответ №1:
Если вы измените статус на 200, это должно сработать. Статус 204 — «Нет содержимого», поэтому он не отправляет обратно JSON.
res.status(204).send({value: somethin&})
становится
res.status(200).send({value: somethin&})
это то же самое, что
res.send({value: somethin&})
Комментарии:
1. Пытался, res.status(200).json({значение: данные}). По-прежнему не возвращает JSON. Я использую npm &et-folder-size в качестве &etsize. — npmjs.com/packa&e/&et-folder-size
2. Я заметил, что обещание не выполняется, если оно проходит через другую ветвь инструкции if. Видите ли вы в конце строки отладки с правильными данными? похоже, что для этого раздела должно быть решение: else{ console.lo&(countFiles) console.lo&(c ‘…’ папка) } в случае ошибки оно не равно null, обещание не будет ни разрешено, ни отклонено. Это просто зависает из-за ошибки?
3. Я получаю результат в console.lo& (finalRes), также console.lo& (res.headersSent) показывает true. Данные не поступают во внешний интерфейс.
4. Вы пробовали тестировать свой API напрямую с помощью Postman, CURL, веб-браузера или другого средства, чтобы подтвердить, что именно ваш API не возвращает данные? postman.com Обычно я тестирую свои API fist с помощью Postman, и как только я подтверждаю, что они работают правильно, я пытаюсь вызвать из своего клиентского кода.
5. Какой результат вы получаете при вызове
curl http://0.0.0.0:3001/your-path
?