Проверка существующей электронной почты в базе данных таблиц(sql), node.js

#javascript #sql #node.js

Вопрос:

У меня есть веб-формуляр, из которого я извлекаю данные. Уникальным полем должно быть электронное письмо, но если я повторю электронное письмо, мой формуляр прерывается и выдает ошибку, я не знаю, как остановить разрыв моего формуляра, я просто хочу ошибку.нажмите(«повторно введите свой адрес электронной почты»), чтобы снова подключиться к бд с помощью npm start. Я ищу подтверждение или что-то в этом роде, я новичок в node.js и работа с js

 connection.query(  "SELECT * FROM `employees` WHERE `email`= ?",  [employee.email],  function (err, row) {  if (err) throw err;  else {  if (row amp;amp; row.length) {  error.push("Email already exists!"); //this does nothing  return console.log("Email is existing already!");  }  }  }  ); if(error.length === 0){  // insert data in the table } else {  res.status(400).send(error);  console.log("Error");  }  

Я хочу, чтобы error.push(«Электронная почта уже существует!»); чтобы изменить мой массив ошибок, чтобы он не входил в первый if(error.length === 0)

Комментарии:

1. Отметьте эту строку: вернуть console.log(«Электронная почта уже существует!»); Вы возвращаете console.log, вам следует удалить инструкцию о возврате.

Ответ №1:

connection.query является асинхронной функцией. Так error.push бывает после вашего if .

Возможные решения —

  1. Переместите следующий код в функцию обратного вызова
  2. Создайте обещание и разрешите его в функции, иначе говоря, используйте async/await систему. Пример функции:
 const executeQuery = (con, query, params = null) =gt; {  return new Promise((resolve, reject) =gt; {  con.query(query, params, (err, res) =gt; {  if (err) {  reject(err);  return  }  resolve(res);  });  }) };  

Вы можете запустить это, а можете сказать await executeQuery(con,query,param) и продолжить оттуда.