[英]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.send
或res.json
(不是必須的)
請注意大文件內容。 您需要為此使用res.pipe
或任何streaming
功能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.