如何从目录中读取文件并作为JSON发送给客户端?

hus*_*ain 6 javascript json node.js angularjs

我在服务器目录中记录文件我想向客户端显示文件名,所以我创建readDirectory.js了正确读取名称现在我很新node.js,我正在尝试将json数据发送到客户端但它没有发生,我如何发送日志文件名使用快递到客户端?

readDirectory.js

var fs = require('fs');
var path = './Logs'
var Logs = [];
function readDirectory(){
    fs.readdir(path, function(err, items) {
        Logs.push(items);
       /* console.log(items);
        for (var i=0; i<items.length; i++) {
            console.log(items[i]);
        }*/

    });
 return Logs;
}
exports.readDirectory = readDirectory;
Run Code Online (Sandbox Code Playgroud)

app.js

 var express = require('express');
    var app = express();
    var readDirectory = require('./readDirectory');
    app.use(express.static(__dirname + "/public"));

    app.get('/logs',function(req,res){
    res.send(readDirectory.readDirectory());
   });
Run Code Online (Sandbox Code Playgroud)

angularFactory.js

angular.module('App').factory('DitFactory', function ($http) {
    'use strict';
    var data;
    return {
        data:"data from factory"
       getLogs: function () {
            return $http.get('/logs')
                .then(function (response) {
                    return response.data;
                });
        }
    }

});
Run Code Online (Sandbox Code Playgroud)

Lal*_*ami 1

你的readDirectory.js应该是这样的:

var fs = require('fs');
var path = './Logs'
var Logs = [];
function readDirectory(callback){
    fs.readdir(path, function(err, items) {
       Logs.push(items);
       callback(Logs);       
    }); 
}
exports.readDirectory = readDirectory;
Run Code Online (Sandbox Code Playgroud)

你的app.js应该是这样的:

var express = require('express');
var app = express();
var readDirectory = require('./readDirectory');
app.use(express.static(__dirname + "/public"));

app.get('/logs',function(req,res){
    readDirectory.readDirectory(function(logFiles){
       res.json({files : logFiles});
   });
});
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!