我正在使用Ajax调用自己调用AWS的NodeJS/ExpressJS post方法,并且我希望将AWS返回状态返回给浏览器。毫不奇怪,在下面片段末尾的“res.status(200).send('Success!');”在AWS本身甚至被调用之前调用,因此没有意义。但无法弄清楚如何在AWS的匿名返回函数中获取原始Ajax“res”对象,因此我可以调用.status和.send。看起来很简单,但一直没有弄清楚。如何从Node.JS/Express.JS post()方法返回AWS错误状态?
router.post('/notification', function(req, res) {
var config = req.app.get('config');
var sns = new AWS.SNS({ region: config.AWS_REGION});
var snsMessage = 'Hello world!';
sns.publish({ TopicArn: config.NEW_SIGNUP_TOPIC,
Message: snsMessage }, function(err, data) {
if (err) {
console.log('Error publishing SNS message: ' + err);
} else {
// How to get the original res object here, so I can call
// res.status(200).send('It worked!') here
console.log('It worked!');
}
});
// The following line returns status to the original ajax post call
// before AWS is even called.
res.status(200).send('Success!'); //
});
是的,工作!谁知道!令我惊讶的是,“res”的范围可能扩展到稍后执行的匿名回调函数,但我猜JavaScript理解它正在调用方法中访问一个对象并使其工作。非常感谢! –
为了好玩,我只是尝试在router.post()中创建一个局部变量foo,并且正如我期望的那样,在尝试访问回调中的foo时出现错误。我想我在指望原始请求对象没有去任何地方的事实,因此回调仍然可以得到它?思考? –
你应该阅读JavaScript范围。如果您有新问题,请展示您的新代码。或者将其作为一个新问题提出。 –