我是Node / Express的新手,在编写一个安静的API的早期阶段,开发人员可以通过HTTP GET访问“/ zwave / devices”路径,以接收JSON格式的设备列表。
我能够通过来自其他来源的XHR请求获取原始设备JSON,并在启动应用程序时成功将其输出到控制台以进行调试,但是,当我通过浏览器访问“/ zwave / devices”时,JSON控制台中显示的输出是一个空对象{}。
启动应用程序时,我会收到我希望在控制台中的完整JSON数据。但是,当我在等待zwave.getDevicesJSON()完成后访问/ zwave / devices时,我没有。为什么呢?
提前感谢您的帮助。
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 :(得分: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);
});
你可以更多地关注路线