Экспресс res.json({}) не отправляет данные в приложение angular

#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 ?