我正在编写一个函数来连接REDISLABS上的REDIS实例。我附加了一个API网关来调用此代码。奇怪的是,虽然测试它来自API网关测试控制台,但它无法正常工作。不幸的是,我无法在测试控制台上看到任何错误。
我已经将代码移动到本地机器作为普通的NodeJS代码,它没有任何问题。我的代码看起来像这样:
exports.handler = async (event) => {
var client = require('redis').createClient({
host: 'redis-XXXXXXXX.c10.us-east-1-2.ec2.cloud.redislabs.com',
password: 'XXXXXXXXXXXXX',
port: '14021'
});
client.on('connect', () => {
return {
status: 200,
message: 'connected'
}
});
client.on('error', (error)=> {
return {
status: 404,
message: 'Something went wrong:'+ error
};
})
};
我配置了一个VPC,并且安全组的所有端口都启用了(用于测试)出站连接。
有人可以建议我哪里出错吗?
您试图从回调而不是从处理程序本身返回结果。我不确定如何使用async
,但没有它你可以做:
exports.handler = (event, context, callback) => {
var client = require('redis').createClient({
host: 'redis-XXXXXXXX.c10.us-east-1-2.ec2.cloud.redislabs.com',
password: 'XXXXXXXXXXXXX',
port: '14021'
});
client.on('connect', () => {
callback(null, {
status: 200,
message: 'connected'
});
});
client.on('error', (error)=> {
callback(null, {
status: 404,
message: 'Something went wrong:'+ error
});
});
};
如果抛出异常,您可能应该添加更多错误处理,因此在这种情况下您不会得到空响应。