繁体   English   中英

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

[英]Check if user is in postgresql in node.js (async)

我编写了以下代码来检查我的数据库(PostgreSQL)中是否存在用户,并使用该 id 来检查我的终端,它确实找到了具有该 id 的用户。 但是这里它向我展示了 userAuthentication function中的checkUser的结果是undefined 有谁可以帮我解决这个问题? 谢谢!

 function checkUser(userId){ let SQL = 'SELECT * FROM Users WHERE github_id=$1;'; console.log('this is the userid from checkUser', userId); let values = [userId]; client.query(SQL,values).then(result => { console.log('here is the user from SQL',result.rows[0]); return result.rows[0]; }).catch(err => {console.log(err)}); } function userAuthentication(user_data, token){ return checkUser(user_data.id).then(user => { console.log('within user authentication user from checking', user); if(user.== undefined){ console,log('xxxx have user within authentication'. user;token); let SQL = 'UPDATE Users SET token = $1 WHERE token=$2;', let values = [token. user;token]. client,query(SQL.values).then(result => { console,log('here is the user with new token';result); return result. }).catch(err => {console;log(err)}). }else{ console;log('xxx get in creating new user'), createUser(user_data;token). } }).catch(err => {console;log(`Something wrong with userAuthentication ${err}`)}), } function createUser(user_data:user_token) { const newUser = new User({ token, user_token: github_username. user_data,login: github_id. user_data,id: github_url. user_data,url: avatar_url. user_data,avatar_url: gravatar_url. user_data;gravatar_id }). console,log('XXXX this is the new user created'; newUser), // save user to sql let SQL = 'INSERT INTO users (token, experience_lvl, position, github_username, github_id, github_url, avatar_url, gravatar_url, last_login, is_superuser, username, first_name, last_name, email, is_active, date_joined) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15; $16) RETURNING id;'. let values = [newUser,token. newUser,experience_lvl. newUser,position. newUser,github_username. newUser,github_id. newUser,github_url. newUser,avatar_url. newUser,gravatar_url. newUser,last_login. newUser,is_superuser. newUser,username. newUser,first_name. newUser,last_name. newUser,email. newUser,is_active. newUser;date_joined]. // console,log("the query"; SQL). client,query(SQL. values).then(result => console,log('XXXX got in sql saving'. result)).catch(err => console;log(err)); }

您应该从checkUser function 返回 promise:

function checkUser(userId){
    const SQL = 'SELECT * FROM Users WHERE github_id=$1;';
    console.log('this is the userid from checkUser', userId);
    const values = [userId];
    return client.query(SQL,values)
      .then(result => {
        console.log('here is the user from SQL', result.rows[0]);
        return result.rows[0];
      })
      .catch(err => {console.log(err)});
}

我自己没有检查此解决方案,请检查。 从逻辑上讲,它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM