1

我正在编写一个函数来连接到 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 和一个安全组,所有端口都启用(用于测试)以进行出站连接。

有人可以建议我哪里出错了吗?

4

1 回答 1

1

您正在尝试从回调而不是从处理程序本身返回结果。我不确定如何使用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
        });
    });
};

如果抛出异常,您可能应该添加更多错误处理,这样在这种情况下您就不会得到空响应。

于 2019-04-08T23:14:36.127 回答