【问题标题】:How to do a petition to a function with mysql [duplicate]如何使用mysql对函数进行请愿[重复]
【发布时间】:2020-01-31 14:46:51
【问题描述】:
我想做一个函数来告诉我用户是否在我的数据库中。
我无法得到答案。
我试图用一个函数来做。
function userExist (user) {
con.query("SELECT * FROM users WHERE name=?", [user], function(err, result) {
if(err) throw err;
if(result)
return true
else
return false
});
}
我希望是真/假,但输出未定义。
【问题讨论】:
标签:
javascript
mysql
asynchronous
【解决方案1】:
con.query 函数是异步函数(你不知道它什么时候完成),所以即使 con.query 还没有完成,userExist 函数也会完成,解决你必须返回一个promise userExist 函数然后调用来获取想要的结果是这样的:
function userExist(user) {
return new Promise((resolve, reject) => {
con.query('SELECT * FROM users WHERE name=?', [user], function(
err,
result
) {
if (err) reject(false);
if (result) {
resolve(true)
}
else{
resolve(false)
}
});
});
}
当调用 userExist 时这样调用它:
userExist(user).then(function(data) {
if (data) {
console.log('user is exist');
}
else {
console.log('user is not exist');
}
}).catch(function(err) {
console.log(err);
});