验证表数据库(sql),node.js中的现有电子邮件

Posted

技术标签:

【中文标题】验证表数据库(sql),node.js中的现有电子邮件【英文标题】:Validation for existing email in table database(sql), node.js 【发布时间】:2021-11-01 12:48:16 【问题描述】:

我有一个从中提取数据的网络公式。唯一的字段应该是电子邮件,但是如果我重复电子邮件,我的公式会中断并引发错误,我不知道如何阻止我的公式中断,我只想要一个 error.push("reenter your email"),没有使用 npm start 再次连接到数据库。我正在寻找验证或 smth,我是 node.js 的初学者并使用 js

connection.query(
    "SELECT * FROM `employees` WHERE `email`= ?",
    [employee.email],
    function (err, row) 
      if (err) throw err;
      else 
        if (row && 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("Email 已经存在!");修改我的错误数组,使其不会进入第一个 if(error.length === 0)

【问题讨论】:

检查这一行:return console.log("Email is existing already!");你正在返回一个console.log,你应该删除return语句。 【参考方案1】:

connection.query 是一个异步函数。所以error.push 发生在您的if 之后

可能的解决方案 -

    将进一步的代码移动到回调函数中 创建一个 Promise 并在函数中解决它,也就是使用 async/await 系统。示例函数:
const executeQuery = (con, query, params = null) => 
    return new Promise((resolve, reject) => 
        con.query(query, params, (err, res) => 
            if (err) 
                reject(err);
                return
            
            resolve(res);
        );
    )
;

你可以运行这个,你可以说await executeQuery(con,query,param)然后从那里继续。

【讨论】:

以上是关于验证表数据库(sql),node.js中的现有电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

从 jQuery 中的现有电子邮件和密码数组中验证电子邮件和密码

有没有办法从我的 Node.js 服务器使用 Firebase Admin SDK 发送验证电子邮件?

Node.Js AWS SES - 发送电子邮件时的 ETIMEDOUT

验证现有身份验证用户的电子邮件后更新 Firestore 文档?

将 Excel 电子表格数据导入现有的 sql 表?

使用现有数据库表中的用户名和密码在 Blazor 中进行身份验证?