2016-06-29 6 views
6

Mam pliki dzienników w katalogu na serwerze Chciałem wyświetlić nazwy plików po stronie klienta, więc stworzyłem readDirectory.js, który poprawnie odczytuje nazwy Teraz jestem bardzo nowy w node.js i próbuję wysłać dane json do klienta, ale to się nie dzieje, Jak mogę wysłać nazwę pliku dziennika do klienta za pomocą ekspresowego?Jak mogę odczytać pliki z katalogu i wysłać jako JSON do klienta?

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

}); 

Odpowiedz

1

swoimi readDirectory.js powinna wyglądać następująco:

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; 

i swoje app.js powinno być tak:

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

Nadzieja ta pomoc!

+0

Dzięki temu zadziałało, doceniam twoją pomoc! – hussain

2

Musisz umieścić tablicę do serializacji json Logs i wysłać go z powrotem do klienta

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

Albo

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

nadal nie widzę danych Nie jestem pewien dlaczego – hussain

+0

Spróbuj użyć przeglądarki internetowej, aby uzyskać dostęp do JSON? Lub możesz wypróbować 'console.log (odpowiedź)' –

+0

Myślę, że pierwsze miejsce nie otrzymuję danych z 'readDirectory.js' do' app.js' z jakiegoś powodu, debugowałem go i widzę 4 elementy w tablicy Logs w ' Funkcja readDirectory', ale jej nie przekazano do 'app.js' – hussain

Powiązane problemy