2014-12-14 4 views
0

Я новичок в Node/Express и на ранних этапах написания надежного API, где разработчик может получить доступ к пути «/ zwave/devices» с помощью HTTP GET для получения списка устройств в формате JSON.Узел/Экспресс-маршрут, показывающий неправильный вывод

Я могу получить необработанное устройство JSON через запрос XHR из другого источника и успешно выводить его на консоль для целей отладки при запуске приложения, однако, когда я получаю доступ к «/ zwave/devices» через браузер, Выход JSON, показанный на консоли, представляет собой пустой объект {}.

При запуске приложения я возвращаю полные данные JSON, ожидающие в консоли. Однако, когда я посещаю/zwave/devices после ожидания zwave.getDevicesJSON(), чтобы закончить, я этого не делаю. Зачем?

Заранее благодарим за помощь.

server.js

// Singleton; shared state and behavior of a single class instance. 
var zwave = require('./zwave.js'); 

// Route for /zwave/devices that should send JSON output to console for debugging. 
app.get('/zwave/devices', function(req, res) { 
    zwave.showDevicesJSON();   // Displays second, incorrectly; outputs {} 
    console.log(zwave.devicesJSON); // Displays third, incorrectly; outputs {} 
}); 

var server = app.listen(http_port, function() {  
    // Initial get of device JSON data, with a callback to show JSON in the console 
    zwave.getDevicesJSON(zwave.showDevicesJSON); // Displays first, correctly; outputs JSON 
}); 

zwave.js

function Zwave() { 
    this.devicesJSON = {};  
}; 

Zwave.prototype.getDevicesJSON = function(callback) { 
    // Working XHR code here to obtain device JSON. 
    this.devicesJSON = JSON.parse(data); 
    callback.bind(this)(); 
}; 

Zwave.prototype.showDevicesJSON = function(req,res) { 
    console.log('Show Devices Is Firing'); 
    console.log(this.devicesJSON);  
}; 

module.exports = new Zwave(); 
+0

* JSON.parse (данные) *! что такое * данные *, которые вы обрабатываете. –

ответ

0

Это потому, что вы никогда не посылать выходной сигнал в ответ

попробуйте поставить этот

app.get('/zwave/devices', function(req, res) { 
    zwave.showDevicesJSON();   // Displays second, incorrectly; outputs {} 
    console.log(zwave.devicesJSON); // Displays third, incorrectly; outputs {} 
res.json(zwave.devicesJSON); 
}); 

вы можете опереться больше о маршрутизации здесь

http://expressjs.com/starter/basic-routing.html

+0

Благодарим за комментирование, однако это не тот ответ, который мне нужен. Даже с res.json (zwave.devicesJSON), который отправляет ответ, выход остается {} – RT01

Смежные вопросы