sql >> Database teknologi >  >> RDS >> Mysql

Forespørgsel til en MySQL-database fra en NodeJS AWS Lambda-funktion

Problemet var, at jeg havde brug for at sætte min kontekst. lykkes inde i mine tilbagekald. Mange tak til sqlbot, da hans snak om tilbagekald fik mig til at undersøge, hvor tingene faktisk stoppede deres eksekvering.

Så når du bruger AWS Lambda, får du åbenbart ikke dine tilbagekald, hvis "konteksten" slutter før dine tilbagekald bliver kaldt. Så selvom jeg havde placeret alle mine tilbagekald som sådan:connect -> query -> end, bliver det første tilbagekald af kæden fra connect aldrig kaldt, fordi "context.succeed" blev kaldt lige bagefter, hvilket afsluttede eksekveringen.

Her er min kode lige nu (der sker en ordentlig forespørgsel nu):

var mysql = require('mysql');
var connection = mysql.createConnection({
    ...
});

exports.handler = (event, context) => {
    try {

        if (event.session.new) {
            // New Session
            console.log("NEW SESSION");
        }


        switch (event.request.type) {

            case "LaunchRequest":
                // Launch Request
                console.log(`LAUNCH REQUEST`);
                context.succeed(
                    generateResponse({},
                        buildSpeechletResponse("Welcome to an Alexa Skill, this is running on a deployed lamda function", true)
                    )
                );
                break;

            case "IntentRequest":
                // Intent Request
                console.log(`Intent Request`);
                console.log('Then run MySQL code:');
                connection.connect(function(err) {
                    console.log('Inside connection.connect() callback');
                    if (!err) {
                        console.log("Database is connected ... ");
                        connection.query("INSERT INTO Users (user_id) VALUES ('TESTNAME')",
                            function(err, result) {
                                console.log("Inside connection.query() callback")
                                if (!err) {
                                    console.log("Query Successful! Ending Connection.");
                                    connection.end();
                                } else {
                                    console.log("Query error!");
                                }
                            });
                    } else {
                        console.log("Error connecting database ..." + err.message);
                    }
                    context.succeed(
                        generateResponse({},
                            buildSpeechletResponse("Welcome to the incredible intelligent MySQLable Alexa!", true)
                        )
                    );
                });

                break;

            case "SessionEndedRequest":
                // Session Ended Request
                console.log(`SESSION ENDED REQUEST`);
                break;

            default:
                context.fail(`INVALID REQUEST TYPE: ${event.request.type}`);

        }

    } catch (error) {
        context.fail(`Exceptiodn: ${error}`)
    }

};

//Helpers
buildSpeechletResponse = (outputText, shouldEndSession) => {

    return {
        outputSpeech: {
            type: "PlainText",
            text: outputText
        },
        shouldEndSession: shouldEndSession
    };
};

generateResponse = (sessionAttributes, speechletResponse) => {
    return {
        version: "1.0",
        sessionAttributes: sessionAttributes,
        response: speechletResponse
    };
};



  1. FLET:Opdatering af kilde- og måltabeller placeret på separate servere

  2. Sådan fungerer GET_FORMAT() i MariaDB

  3. ML{.NET} Introduktion

  4. 3 måder at returnere tidszonen fra en DateTime-værdi i Oracle