Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 特快专递及;JS:数组返回为空,填充较晚_Javascript_Arrays_Express_Response - Fatal编程技术网

Javascript 特快专递及;JS:数组返回为空,填充较晚

Javascript 特快专递及;JS:数组返回为空,填充较晚,javascript,arrays,express,response,Javascript,Arrays,Express,Response,我有一个route方法,可以在http响应中返回文件名列表 我用于响应的数据结构最终被填充,尽管是在返回响应之后,这意味着我得到的是一个空的、无用的响应 我可以看到数据结构最终被填充,正如日志内容的输出所示 代码: app.get('/hello',函数(req,res){ var路径={}; fs.readdir(“./uploads”,函数(err,items){ 控制台日志(项目); for(var i=0;i只需将res.json()调用移动到回调中,移动到for循环之后 编辑1: ap

我有一个route方法,可以在http响应中返回文件名列表

我用于响应的数据结构最终被填充,尽管是在返回响应之后,这意味着我得到的是一个空的、无用的响应

我可以看到数据结构最终被填充,正如日志内容的输出所示

代码:

app.get('/hello',函数(req,res){
var路径={};
fs.readdir(“./uploads”,函数(err,items){
控制台日志(项目);

for(var i=0;i只需将
res.json()
调用移动到回调中,移动到
for
循环之后

编辑1:

app.get('/hello', function (req, res) {

    var paths = [];

    fs.readdir('./uploads', function (err, items) {

        console.log(items);

        for (var i=0; i<items.length; i++) {
            paths.push(items[i]);
            console.log(items[i]);
        }

        res.json(paths);
    });
});
app.get('/hello',函数(req,res){
var路径=[];
fs.readdir(“./uploads”,函数(err,items){
控制台日志(项目);

对于(var i=0;i您应该在读取回调中的文件目录后返回响应

下面是相同的代码段:

app.get('/hello',function(req,res){
    var paths = {};
    fs.readdir('./uploads', function(err, items) {
       console.log(items);
       for (var i=0; i<items.length; i++) {
          paths[i] = items[i];
          console.log(items[i]);
       }
       res.json(paths);
    });
});
app.get('/hello',函数(req,res){
var路径={};
fs.readdir(“./uploads”,函数(err,items){
控制台日志(项目);

对于(var i=0;iDo),您的意思是问题在于
res.json(this.paths)
返回一个空的JSON响应?另外,如果
路径
对象将具有数字键,那么最好将其设置为一个数组。在这种情况下,您不必使用
for
循环来填充数组,除非您对每个项执行其他操作。
app.get('/hello',function(req,res){
    var paths = {};
    fs.readdir('./uploads', function(err, items) {
       console.log(items);
       for (var i=0; i<items.length; i++) {
          paths[i] = items[i];
          console.log(items[i]);
       }
       res.json(paths);
    });
});