我有一个简单的REST应用程序,我想读取目录中的文件并将它们发送回前端。下面是我正在使用的代码:
const fs = Promise.promisifyAll(require('fs'))
const router = require('express').Router()
router.get('/list', async (req, res, next) => {
const files = await fs.readdirAsync('presentations')
res.json(files)
})问题是:我的前端收到'Promise',但如果我尝试调试它,它会告诉我files是一个数组。我试着不使用async/await这样的语法:
router.get('/list', (req, res, next) => {
fs.readdirAsync('presentations')
.then(files => {
res.json(files)
})
})但结果是一样的:前端仍然获得Promise。
更新:问题出在前端axios实例。它没有解决promise,所以await for results解决了一个问题。
发布于 2018-03-01 17:23:26
所以,有三个部分。读取、存储和发送。
下面是阅读部分:
var fs = require('fs');
function readFiles(dirname, onFileContent, onError) {
fs.readdir(dirname, function(err, filenames) {
if (err) {
onError(err);
return;
}
onFileContent(filename);
});
});
});
}下面是存储部分:
var data = {};
readFiles('dirname/', function(filename) {
data[filename] = filname;
}, function(err) {
throw err;
});发送部分由您决定。您可能希望逐个发送它们,或者在阅读完成后发送它们。
如果你想在读取完成后发送文件,你应该使用fs函数的同步版本或者使用promises。异步回调不是一种好的风格。
https://stackoverflow.com/questions/49046289
复制相似问题