안녕하세요 여러분, 제가 해결 방법을 모르는 문제가 있습니다. 조금 이상하다./ 기본적으로 나는이 람다 함수를 만들어서 'mysql'노드 패키지를 사용하여 mysql DB에 연결했다.AWS에서 mysql-npm을 사용하여 mysql 쿼리를 실행
'sls function function1'명령을 사용하여 내 PC에서 명령 줄에서 함수를 실행하고 다른 쿼리를 모두 작성하면 문제가 없습니다. 그러나 링크를 사용하여 웹 브라우저에서 함수를 호출하면 서버를 처음 새로 고칠 때 이전 결과로 응답하기 때문에 올바른 결과를 얻으려면 2 번 새로 고쳐야합니다.
커맨드 라인에서 항상 나는 다른 thredID를 가지고있는 반면 webbrowser는 항상 동일하다는 것을 알았습니다.
또한 람다 함수 코드에서 연결을 닫지 않습니다. 왜냐하면 명령 줄에서 함수를 실행하면 브라우저가 두 가지 쿼리 만 만들 수 있습니다. 그런 다음 사용할 수 없다는 메시지가 나타납니다. 닫힌 연결.
그래서 람다가 웹 브라우저에서 전화를 걸면 이전 쿼리 결과를 저장하는 것처럼 보입니다.
분명히 나는 어리석은 실수를 저지르고 있지만 어떻게 해결해야할지 모르겠다. 누구나 아이디어가 있습니까? 감사합니다 :)
'use strict';
//npm packages
var mysql=require('mysql');
var deasync = require('deasync');
//variables
var goNext=false; \t \t \t //use to synchronize deasync
var error=false; \t \t //it becomes TRUE if an error occured during the connection to the DB
var dataColumnTable; \t \t //the data thet you extract from the query to the DB
var errorMessage;
//----------------------------------------------------------------------------------------------------------------
//always same credentials
var connection = mysql.createConnection({
\t \t \t \t \t host : 'hostAddress',
\t \t \t \t \t user : 'Puser',
\t \t \t \t \t password : 'password',
\t \t \t \t \t port : '3306',
\t \t \t \t \t database : 'database1',
\t \t });
//----------------------------------------------------------------------------------------------------------------
module.exports.handler = function(event, context) {
var Email=event.email;
connection.query('SELECT City, Address FROM Person WHERE E_Mail=?', Email, function(err, rows) {
\t \t \t if(err){
\t \t \t \t console.log("Cannot connect to DB");
\t \t \t \t console.log(err);
\t \t \t \t error=true;
\t \t \t \t errorMessage=err;
\t \t \t }
\t \t \t else{
\t \t \t \t console.log("data from column acquired!");
\t \t \t \t dataColumnTable=rows;
\t \t \t }
\t \t \t
\t \t \t //connection.end(function(err) {
\t \t \t // \t \t \t \t \t \t \t connection.destroy(); \t \t \t
\t \t \t //}); \t
\t \t \t //console.log("Connection closed!");
\t \t \t goNext=true;
});
require('deasync').loopWhile(function(){return goNext!=true;});
//----------------------------------------------------------------------------------------------------------------
if(error==true)
\t return callback('Error '+ errorMessage);
else \t
\t return callback(null,dataColumnTable); //return a JsonFile
\t
//fine headler
};
이 문제는 웹 브라우저가 결과를 캐싱하기 때문에 발생하는 람다와 관련이 없습니다. 브라우저 캐시를 다이얼링하여 시도하십시오. – error2007s
@ error2007s 감사합니다.이 솔루션을 사용해 보겠습니다. – Jacob