Nodejs asynchronous database function needs synchronous answer

后端 未结 1 625
星月不相逢
星月不相逢 2020-12-21 09:22

I am new to nodejs and am writing some code that needs to query my MySQL database and return a username from a given user_id. I\'ve been reading that all your functions sho

相关标签:
1条回答
  • 2020-12-21 10:22

    Pass in a callback function to get_current_username and then call that callback function from inside of connect.query's callback:

    function get_current_username(current_user_id, callback) {
        console.log(' | Entered get_current_username');
        sqlq = 'SELECT username FROM users WHERE id = ' + current_user_id;
        connection.query(sqlq, function(err, rows, fields) {
          if (err) throw err;
          var current_username = rows[0].username;
          console.log(' | the current_username =' + current_username);        
          callback(current_username);
        });
    }
    

    When you go to use this function then, you'd do something like:

    get_current_username(12345, function(username) {
       console.log("I am " + username);
    });
    

    You could also check out the use of promises/futures. I have a feeling I won't be able to do an explanation of these justice, so I'll link off to this StackOverflow question about understanding Promises.

    This is an architectural decision though - some people would prefer to use callbacks, especially if writing a module intended for re-use by 3rd parties. (And in fact, it's probably best to get your head fully wrapped around callbacks in the learning stages here, before adopting something like Promise.)

    0 讨论(0)
提交回复
热议问题