验证表数据库(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