Я новичок в 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();
* JSON.parse (данные) *! что такое * данные *, которые вы обрабатываете. –