2016-06-29 18 views
6

Tôi có tệp nhật ký trong thư mục máy chủ tôi muốn hiển thị tên tệp cho phía máy khách vì vậy tôi đã tạo readDirectory.js đang đọc tên chính xác Bây giờ tôi rất mới với node.js và tôi đang cố gắng gửi json dữ liệu cho khách hàng nhưng không xảy ra, Làm thế nào tôi có thể gửi tên tệp nhật ký cho khách hàng bằng cách sử dụng express?Làm cách nào để đọc tệp từ thư mục và gửi dưới dạng JSON cho khách hàng?

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

}); 

Trả lời

1

readDirectory.js bạn sẽ trông như thế này:

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; 

app.js bạn nên như thế này:

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

Hope Trợ giúp này!

+0

Cảm ơn nó đã làm việc tôi đánh giá cao sự giúp đỡ của bạn! – hussain

2

Bạn phải đặt serialize mảng Logs vào json và gửi lại cho khách hàng

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

Hoặc

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

Tôi vẫn không thấy dữ liệu tôi không chắc chắn tại sao – hussain

+0

Hãy thử sử dụng trình duyệt web để truy cập vào JSON sau đó? Hoặc bạn có thể thử 'console.log (response)' –

+0

tôi nghĩ rằng nơi đầu tiên tôi không nhận được dữ liệu từ 'readDirectory.js' đến' app.js' vì một lý do nào đó tôi đã sửa lỗi và tôi thấy 4 mục trong mảng Log trong ' function readDirectory' nhưng không được chuyển tới 'app.js' – hussain

Các vấn đề liên quan