簡體   English   中英

如何從node.js路由的內部函數內部獲取參數到以下范圍

[英]How to get argument from inside an inner function in a node.js route to below scope

我從NPM包的node-dir中獲取了以下代碼,該代碼可以正常工作,因為它讀取目錄,然后讀取目錄中的每個文件,然后將其吐回到控制台。 我真正想要的是將其與JSON.stringify一起發送,因此我可以執行ajax或$ .getJSON調用以將其呈現到UI,以便可以從數據生成報告。

我知道問題出在哪里,files參數在第二個函數范圍內。 因此,當我嘗試對文件執行req.send時,它說文件未定義。 如果我嘗試將req.send放在函數中,它將說未定義req,或者如果我將req作為參數傳遞,它將說req.send不是函數,因為該函數存儲在router.get中。

我希望使用當前代碼提供一個簡單的解決方案,還是有更好的方法? 我相信它可能與.apply()有關,或者可能與某種回調或諾言有關? 對不起,我仍然對這種功能編程不滿意。

router.get("/api/all/reports", (req, res) => {
     const pathToDir = path.resolve(__dirname, "../../", "automation_projects/fcsf/results/");
    dir.readFiles(pathToDir,
       function(err, content, next) {
           if (err) throw err;
           console.log('content:', content);
           next();
          res.send(JSON.stringify(content));
       },
       function(err, files){
           if (err) throw err;
       });

    });
router.get("/api/all/reports", (req, res) => {
     let fileContent = "";
     const pathToDir = path.resolve(__dirname, "../../", "automation_projects/fcsf/results/");
    dir.readFiles(pathToDir,
       function(err, content, next) {
           if (err) throw err;
           console.log('content:', content);
           fileContent += content; 
           next()
       },
       function(err, files){
           if (err) throw err;
           res.send(JSON.stringify(fileContent));
       });

    });

請讓我知道它是否有效。 我認為應該是res.sendres.json (不是必須的)

請注意大文件內容。 您需要為此使用res.pipe或任何streaming功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM