sql >> データベース >  >> RDS >> Mysql

NodeJSAWSLambda関数からのMySQLデータベースのクエリ

    問題は、context.succeedをコールバック内に配置する必要があることでした。 sqlbotに感謝します。彼のコールバックの話から、実際に実行が終了している場所を調査することができました。

    したがって、AWS Lambdaを使用しているときに、コールバックが呼び出される前に「コンテキスト」が終了すると、コールバックを取得できないようです。したがって、すべてのコールバックを次のように配置しましたが、接続->クエリ->終了ですが、「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. xamppmysqlとphpmyadminが機能しない

    2. MS AccessとSQLの違いは何ですか?

    3. Djangoで、データベースから100個のランダムレコードを選択するにはどうすればよいですか?

    4. Docker(Apple Silicon / M1 Preview)MySQLマニフェストリストエントリにlinux / arm64/v8に一致するマニフェストがありません