#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) {
// ...
}