1

MongoClient.connect 的回调不调用

我尝试在 aws lambda 中调用回调,但它不起作用,但是如果我删除 export.lambdaHandler 并仅通过节点 app.js 调用它,它就可以正常工作。

exports.lambdaHandler = async (event, context) => {
try {
    MongoClient.connect(url, {
        useNewUrlParser: true
    }, (err, client) => {
        console.log("Connected successfully to server");
    });
    response = {
        'statusCode': 200,
        'body': JSON.stringify({
            message: 'test'
        })
    }
    return response
} catch (err) {
    console.log(err);
    return err;
}
};

应该返回

成功连接到服务器

编辑

我改为等待。现在很好

exports.lambdaHandler = async (event, context) => {
try {
    const client = await MongoClient.connect(url, {
        useNewUrlParser: true
    })
    const db = client.db(dbName)

    await db.createCollection(collectionName)

    client.close()

    return {
        'statusCode': 200,
        'body': JSON.stringify({
            message: 'test'
        })
    }
} catch (err) {
    console.log(err);
    return err;
}
};
4

1 回答 1

0

试试这个,它会返回结果,否则会抛出一个错误,该错误将被捕获并由 Lambda 返回

exports.lambdaHandler = async (event, context) => {

    try {
        MongoClient.connect(url, {useNewUrlParser: true}, (err, client) => {
            if (err) { console.log(err); throw(err); }
            else { 
               console.log("Connected successfully to server"); 
               console.log(client); 
                response = {
                    'statusCode': 200,
                    'body': JSON.stringify({message: client})
                    };
                return response;
            };
        });
    } catch (err) {
        console.log(err);
        return err;
    }

};

于 2018-12-26T11:44:02.900 回答