Не могли бы вы выяснить, почему мой код не работает, когда он работал ранее?

#mysql #node.js #aws-lambda #amazon-rds

#mysql #node.js #aws-lambda #amazon-rds

Вопрос:

 const mysql = require('mysql'); 
const connection = mysql.createConnection({ 
  host: process.env.host1,  
  user: process.env.user, 
  password: process.env.password, 
  port: process.env.port1, 
  connectionLimit: 10,   
  multipleStatements: true,
  connectionLimit: 1000,   
  connectTimeout: 60 * 60 * 1000, 
  acquireTimeout: 60 * 60 * 1000, 
  timeout: 60 * 60 * 1000, 
  debug: true 
});

exports.handler = (event, context, callback) => {  
 context.callbackWaitsForEmptyEventLoop = false;
 var post  = event;
 var query1= connection.query("SELECT * FROM ForexAssistant.users WHERE username=? OR email=?",[event.username,event.email],function(error, results){
  if(results){
   callback(null, 'Already Registered'); 
  }
  else{
   var query2 = connection.query('INSERT INTO ForexAssistant.users SET ?', post, function (error, results) {
    if (error) {   
     throw error  
    }     
   callback(null, 'Successfully Registered');  
  });
 }
});
}
  

Пример тестового события:

 {
  "username": "domi",
  "password": "123456",
  "email": "do@gmail.com"
}
  

Проблема возникает в AWS Lambda с кодом (выше) во время выполнения с использованием Node.js .
Когда мое тестовое событие — это то, что у меня уже есть в качестве записи в таблице mysql, оно выдаст уже зарегистрированный обратный вызов, а когда мое тестовое событие — это что-то новое, чего нет в таблице mysql, я все равно получаю уже зарегистрированный обратный вызов, когда вместо этого он должен перейти к оператору else и выполнить эточтобы успешно зарегистрировать обратный вызов. Раньше это делало это правильно, и я не изменял код, поскольку он работал, и когда я проверил его прошлой ночью, именно тогда я заметил эту ошибку.

Ответ №1:

Проверьте длину results также

 if (results amp;amp; results.length !== 0) {
  // ...
}