Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Meminta database MySQL dari Fungsi NodeJS AWS Lambda

Masalahnya adalah saya harus meletakkan context.succeed saya di dalam panggilan balik saya. Banyak terima kasih kepada sqlbot, karena pembicaraannya tentang panggilan balik membuat saya mempelajari di mana hal-hal yang sebenarnya mengakhiri eksekusi mereka.

Jadi ternyata saat menggunakan AWS Lambda, jika "konteks" berakhir sebelum panggilan balik Anda dipanggil, Anda tidak mendapatkan panggilan balik. Jadi meskipun saya telah menempatkan semua panggilan balik saya seperti ini:connect -> query -> end, panggilan balik pertama dari rantai dari connect tidak pernah dipanggil karena "context.succeed" dipanggil segera setelah itu, yang mengakhiri eksekusi.

Ini kode saya sampai sekarang (mendapatkan kueri yang tepat terjadi sekarang):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java, bagaimana cara mengubah database saat ini ke yang lain?

  2. Apa perbedaan antara MySQL &MySQL2 dengan mempertimbangkan NodeJS?

  3. mengatur beberapa kolom menggunakan satu pembaruan

  4. Cronjob atau acara MySQL?

  5. Pilih kamar yang tersedia antara dua tanggal