2016-06-29 5 views
6

Ich habe Logdateien im Serververzeichnis Ich wollte die Dateinamen auf der Clientseite anzeigen, also habe ich readDirectory.js erstellt, die Namen korrekt liest Jetzt bin ich sehr neu zu node.js und ich versuche, json Daten an den Client senden, aber es ist nicht passiert, Wie kann ich den Namen der Protokolldateien per Express an den Client senden?Wie kann ich Dateien aus dem Verzeichnis lesen und als JSON an den Client senden?

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; 

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()); 
    }); 

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; 
       }); 
     } 
    } 

}); 

Antwort

1

Ihre readDirectory.js sollte wie folgt aussehen:

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}); 
    }); 
}); 

Hoffnung:

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; 

und Ihre app.js so sein sollte diese Hilfe!

+0

Danke, es hat funktioniert, ich schätze Ihre Hilfe! – hussain

2

Sie die Logs Array in json setzen müssen serialisiert werden und es zurück an den Client senden

app.get('/logs',function(req,res){ 
    res.setHeader('Content-Type', 'application/json'); 
    res.send(JSON.stringify(readDirectory.readDirectory())); 
}); 

Oder

app.get('/logs',function(req,res){ 
    res.json(readDirectory.readDirectory()); 
}); 
+0

noch sehe ich keine Daten ich bin mir nicht sicher warum – hussain

+0

Versuchen Sie den Webbrowser zu verwenden, um auf den JSON dann zugreifen? Oder Sie können 'console.log (Antwort)' –

+0

ich denke, ersten Ort, ich bekomme keine Daten von 'readDirectory.js' zu 'app.js' aus irgendeinem Grund debugged ich es und ich sehe 4 Elemente in Logs Array in ' readDirectory 'Funktion aber nicht an' app.js' übergeben – hussain

Verwandte Themen