gpt4 book ai didi

javascript - 将数据从 Sails 服务发送到 Controller

转载 作者:行者123 更新时间:2023-11-29 16:58:34 26 4
gpt4 key购买 nike

我正在使用 SailsJS 编写一个非常基本的 HTTP 请求。我正在从我正在调用的 api 获取我想要的数据,但我无法弄清楚如何将它从我的服务传递回 Controller 并最终使用正文中的数据响应请求。

这是我的 Controller :

module.exports = {
retrieve: function(req, res) {
var output = AccountService.retrieveAccountInfo();
console.log(output);
return res.send(output);
}
}

这是我正在调用的服务。

module.exports = {

retrieveAccountInfo: function() {
var http = require('http');

var options = {
host: 'localhost',
port: 8280,
path: '/sample/account?id=1',
method: 'GET',
headers: {
'sample': 'header'
}
};

var req = http.request(options, function(res) {
var data = '';
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers) + '\n\n');
res.setEncoding('utf8');
res.on('data', function(chunk) {
console.log('BODY: ' + chunk);
data += chunk;
});

res.on('end', function() {
console.log('hit the end');
return JSON.stringify(data);
});
});

req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});

req.end();
}
}

我可能在这里遗漏了一些基本的 JavaScript 内容。我可以到达结束回调并按预期打印“hit the end”,但我无法将数据返回给 Controller 。

最佳答案

您在服务中使用的方法是异步方法,您可以像下面这样修改它们

module.exports = {
retrieve: function(req, res) {
AccountService.retrieveAccountInfo(function(error, output) {
console.log(output);
return res.send(output);
});
}
}

服务-使用回调方法

module.exports = {

retrieveAccountInfo: function(callback) {
var http = require('http');

//.....

res.on('end', function() {
console.log('hit the end');
callback(null, JSON.stringify(data));
});

//.....

req.on('error', function(e) {
console.log('problem with request: ' + e.message);
callback(e); //error
});

req.end();
}
}

关于javascript - 将数据从 Sails 服务发送到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30088497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com