Javascript 检查用户是否在node.js(异步)中的postgresql中

Javascript 检查用户是否在node.js(异步)中的postgresql中,javascript,node.js,postgresql,Javascript,Node.js,Postgresql,我编写了下面的代码来检查我的数据库(PostgreSQL)中是否存在一个用户,我使用该id来检查我的终端,它确实找到了具有我获得的id的用户。然而,这里它告诉我,userAuthentication函数中的checkUser的结果是未定义的。 有人能帮我吗?谢谢 函数checkUser(userId){ 让SQL='从github_id=$1;'的用户中选择*; log('这是checkUser'中的userid',userid); 让值=[userId]; 查询(SQL、值) 。然后(结果=

我编写了下面的代码来检查我的数据库(PostgreSQL)中是否存在一个用户,我使用该id来检查我的终端,它确实找到了具有我获得的id的用户。然而,这里它告诉我,userAuthentication函数中的checkUser的结果是未定义的。 有人能帮我吗?谢谢

函数checkUser(userId){
让SQL='从github_id=$1;'的用户中选择*;
log('这是checkUser'中的userid',userid);
让值=[userId];
查询(SQL、值)
。然后(结果=>{
log('这里是来自SQL的用户',result.rows[0]);
返回结果。行[0];
})
.catch(err=>{console.log(err)});
}
功能userAuthentication(用户数据、令牌){
返回checkUser(user\u data.id)
。然后(用户=>{
console.log('在用户身份验证中用户从检查',用户);
如果(用户!==未定义){
console.log('xxxx拥有身份验证中的用户',user.token);
让SQL='UPDATE Users SET token=$1,其中token=$2;';
让值=[token,user.token];
查询(SQL、值)
。然后(结果=>{
log('这是具有新令牌的用户',结果);
返回结果;
})
.catch(err=>{console.log(err)});
}否则{
log('xxx进入创建新用户');
createUser(用户_数据、令牌);
}
})
.catch(err=>{console.log(`userAuthentication${err}}有问题)});
}
函数createUser(用户\u数据、用户\u令牌){
const newUser=新用户({
令牌:用户令牌,
github_用户名:user_data.login,
github_id:user_data.id,
github_url:user_data.url,
化身url:user_data.avatar_url,
gravatar\u url:user\u data.gravatar\u id
});
console.log('XXXX这是创建的新用户',newUser);
//将用户保存到sql
让SQL='插入用户(令牌、体验、位置、github_用户名、github_id、github_url、头像_url、gravatar_url、last_登录名、is_超级用户、用户名、名字、姓氏、电子邮件、是否活动、加入日期)值($1、$2、$3、$4、$5、$6、$7、$8、$10、$11、$12、$13、$14、$15、$16)返回id;';
让值=[newUser.token、newUser.experience\u lvl、newUser.position、newUser.github\u用户名、newUser.github\u id、newUser.github\u url、newUser.avatar\u url、newUser.gravatar\u url、newUser.last\u登录、newUser.is\u超级用户、newUser.username、newUser.first\u名称、newUser.last\u名称、newUser.email、newUser.is\u活动、newUser.date\u加入];
//log(“查询”,SQL);
查询(SQL、值)
.then(result=>console.log('XXXX进入sql保存',result))
.catch(err=>console.log(err));

}
您应该从
checkUser
功能返回承诺:

函数checkUser(userId){
const SQL='SELECT*FROM用户,其中github_id=$1;';
log('这是checkUser'中的userid',userid);
常量值=[userId];
返回client.query(SQL、值)
。然后(结果=>{
log('这里是来自SQL的用户',result.rows[0]);
返回结果。行[0];
})
.catch(err=>{console.log(err)});
}
我没有亲自检查此解决方案,请检查。从逻辑上讲,它应该是有效的