您能弄清楚为什么以前的代码无法正常工作吗?

时间:2020-09-20 12:17:30

标签: 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"
}

问题是在运行Lambda的AWS Lambda上使用Node.js在运行时中带有代码。 当我的测试事件是我在mysql表中已经具有的条目时,它将提供回调已注册,而当我的测试事件是mysql表中未包含的新事件时,我仍会获得回调已注册它应该移到else语句上并执行该语句以获取成功注册的回调。以前,此操作可以正确执行,并且自从代码可以正常工作以来,我还没有对其进行任何修改。昨晚检查该错误时,我才发现该代码。

1 个答案:

答案 0 :(得分:0)

还要检查results的长度

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