我想使用pg-promise
来检查用户名是否已被使用。
我使用以下查询:
this.db.one('SELECT EXISTS(SELECT 1 FROM users WHERE username = $1)', username);
我在尝试将这个查询封装在一个函数中,该函数仅在用户名存在时返回true,否则返回false。
类似于:
```javascript function checkUsername(username) { // 查询语句 // 如果用户名存在,则返回true,否则返回false } ```
existsUsername(username){
this.db.one('SELECT EXISTS(SELECT 1 FROM users WHERE username = $1)', username)
.then(data => {
if(data.exists == true){
return true;
} else {
return false;
}
});
}
我可以这样简单地使用它:
if(db.users.existsUsername(username)){
// this username is already taken
}
然而,如果条件在查询完成之前被评估,则会导致未定义变量。
返回查询结果的正确方法是什么?
编辑:外部调用程序执行多个异步检查,并返回用户是否有效:
function signUp(username, email, ...){
// perform username existence check existsUser(username)
// perform email existence check existsEmail(username)
// ...
// if everything OK, put user in DB
}