Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

NodeJS AWS लैम्ब्डा फ़ंक्शन से MySQL डेटाबेस को क्वेरी करना

समस्या यह थी कि मुझे अपना संदर्भ डालने की जरूरत थी। मेरे कॉलबैक के अंदर सफल। sqlbot को बहुत-बहुत धन्यवाद, क्योंकि कॉलबैक की उनकी बात ने मुझे यह अध्ययन करने के लिए प्रेरित किया कि चीजें वास्तव में उनके निष्पादन को समाप्त कर रही थीं।

तो जाहिरा तौर पर एडब्ल्यूएस लैम्ब्डा का उपयोग करते समय, यदि आपके कॉलबैक को कॉल करने से पहले "संदर्भ" समाप्त हो जाता है, तो आपको अपनी कॉलबैक नहीं मिलती है। इसलिए भले ही मैंने अपने सभी कॉलबैक इस तरह रखे थे:कनेक्ट -> क्वेरी -> अंत, कनेक्ट से श्रृंखला का पहला कॉलबैक कभी नहीं कहा जाता है क्योंकि "context.succeed" को ठीक बाद में कॉल किया जा रहा था, जिसने निष्पादन समाप्त कर दिया।

यहां मेरा कोड अभी है (अब एक उचित क्वेरी हो रही है):

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. WHERE क्लॉज में एक वेरिएबल का उपयोग करना

  2. SQLSTATE [HY093]:अमान्य पैरामीटर संख्या:बाध्य चर की संख्या लाइन 102 पर टोकन की संख्या से मेल नहीं खाती

  3. #1273 - अज्ञात संयोजन:'utf8mb4_unicode_520_ci'

  4. MySQL में रैंक फ़ंक्शन

  5. SQL क्वेरी जो तालिका में उपयोग नहीं की गई सभी तिथियों को लौटाती है