我正在尝试将我网站上输入的电子邮件与数据库中的电子邮件进行比较,看它是否已经存在。如果是,则该函数返回 false 并显示错误。
var db = new sqlite3.Database('users_db.db');
db.get(
"SELECT * FROM users WHERE useremail = ?",
[email],
function (err, rows) {
if (rows == undefined ){
global.returnvalue2 = false;
}
}
);
我想要的是在选择后立即运行该函数,以便返回值为 false,并且不创建用户记录。
目前我意识到回调是在一切之后调用的,所以它只是进行选择并在程序的其余部分继续进行直到结束。
我如何检查是否有相同电子邮件的现有记录?
最佳答案
利用 javascript 中的异步功能,因此您的代码看起来像这样;
var db = new sqlite3.Database('users_db.db');
function checkemail(email, cb) {
db.get(
"SELECT * FROM users WHERE useremail = ?",
[email],
function (err, rows) {
if (err || rows == undefined ){
cb("bad email", null)
} else {
cb(null,rows)
}
});
}
function checkpassword(pw,cb) {....}
function checkclass(cls,cb) {....}
然后像这样写你的代码;
checkemail(myemail, function(err,rows) {
if (err) return alert(err);
checkpassword(pw, function(err, msg) {
if (err) return alert(err);
checkclass(cls, function(err, msg) {
if (err) return alert(err);
alert("Congratulation you passed all the checks");
});
});
});
关于javascript - sqlite3 回调 (node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551515/