Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn cơ sở dữ liệu MySQL từ Hàm NodeJS AWS Lambda

Vấn đề là tôi cần đặt bối cảnh của mình. Thành công bên trong các lệnh gọi lại của tôi. Rất cảm ơn sqlbot, vì cuộc nói chuyện của anh ấy về các lệnh gọi lại đã dẫn tôi đến việc nghiên cứu nơi mọi thứ thực sự kết thúc quá trình thực thi của chúng.

Vì vậy, rõ ràng khi sử dụng AWS Lambda, nếu "ngữ cảnh" kết thúc trước khi các lệnh gọi lại của bạn được gọi, bạn sẽ không nhận được lệnh gọi lại của mình. Vì vậy, mặc dù tôi đã đặt tất cả các lệnh gọi lại của mình như sau:connect -> query -> end, lệnh gọi lại đầu tiên của chuỗi từ connect không bao giờ được gọi vì "context.succeed" đã được gọi ngay sau đó, điều này đã kết thúc quá trình thực thi.

Đây là mã của tôi tính đến thời điểm hiện tại (đang nhận được một truy vấn thích hợp):

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. Cách đánh số lại chỉ mục chính

  2. Quyền truy cập Java JDBC bị từ chối đối với người dùng

  3. Cú pháp CHÈN SQL - Được DBMS liệt kê

  4. Chèn nhiều hàng trong mysql

  5. ĐẶT HÀNG THEO ngày giờ TRƯỚC NHÓM THEO tên trong mysql