Невозможно обновить таблицу MySQL (AWS RDS) из Lambda, хотя я могу подключиться и вставить - PullRequest
0 голосов
/ 12 октября 2018

Ниже моя лямбда-функция.Запрос приходит от API (API Gateway).Даже когда я пытался передать значения непосредственно в таблицу обновлений , он не обновлялся.Я могу INSERT данные в ту же таблицу через API.Просто интересно, что здесь не так.

Ценю любую помощь.Заранее спасибо.


var mysql = require('mysql');
var config = require('./config.json');
var sql,response;

exports.handler = function(event, context) {
    var connection = mysql.createConnection({
      host     : config.dbhost,
      user     : config.dbuser,
      password : config.dbpassword,
      database : config.dbname
    });

exports.handler = function(event, context,callback) {
   //prevent timeout from waiting event loop
  context.callbackWaitsForEmptyEventLoop = false;

   var variable1= event.variable1;
   var variable2= event.variable2;
   var id= event.id;

    connection.query('UPDATE LocationData SET latitude = ?,longitude =? WHERE userId = ?', [variable1, variable2,id], function(error, results, fields) {
        response = {};
        response['id'] = results.id;
        response['variable1'] = results.variable1;
        response['variable2'] = results.variable2;
        context.succeed(response);
    });

};
};

1 Ответ

0 голосов
/ 12 октября 2018

Вы пропускаете вызов функции connect.Рабочий пример будет выглядеть следующим образом:

var mysql = require('mysql');
var config = require('./config.json');

exports.handler = function(event, context) {
  var connection = mysql.createConnection({
    host     : config.dbhost,
    user     : config.dbuser,
    password : config.dbpassword,
    database : config.dbname
  });
  connection.connect(); // <--- MISSING THIS!

  exports.handler = function(event, context,callback) {
    context.callbackWaitsForEmptyEventLoop = false;

    var variable1 = event.variable1;
    var variable2 = event.variable2;
    var id = event.id;

    var sql = 'UPDATE LocationData SET variable1=?,variable2=? WHERE userId=?';
    connection.query(sql, [variable1, variable2, id], function(error, results, fields) {
      context.succeed({
        id: results.id,
        variable1: results.variable1,
        variable2: results.variable2
      });
    });
  };
};

Кроме того, в качестве общего совета вы всегда должны проверять переменную ошибки в обратном вызове на случай, если что-то идет не так, и реагировать соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...