How to return a value from a mysql SELECT query in node.js

前端 未结 1 1632
野性不改
野性不改 2020-12-30 14:05

I\'m still very new to Node.js, and i\'m trying to understand how callbacks work. So, here is my problem :

I should\'ve put more code :

POST :



        
相关标签:
1条回答
  • 2020-12-30 14:51

    Your two functions should be something like -

    function fetchID(data, callback) {
            connection.query('SELECT id_user FROM USERS WHERE username = ?', data.username, function(err, rows) {
                if (err) {
                    callback(err, null);
                } else 
                    callback(null, rows[0].id_user);
            });
    }
    

    and then

    var user_id;
    
    fetchID(data, function(err, content) {
        if (err) {
            console.log(err);
            // Do something with your error...
        } else {
            user_id = content;
        }
    });
    

    Here in the callback function, the returned variable content will hold the value for user_id.

    EDIT

    I have not solved the exact problem as you had described above.

    But in following example, I have shown that, the callback mechanism is working -

    First (Table creation and insert some dummy data)-

    use test;
    create table users (id int(11) primary key,username varchar(100));
    insert into users values(1, "John");
    insert into users values(2, "Sham");
    

    Now I have made your post method as get and tested in browser.

    Following is the full class tested in my localhost -

    var application_root = __dirname,
        express = require("express"),
        mysql = require('mysql');
    var app = express();
    var connection = mysql.createConnection({
      host : 'localhost',
      user : 'root',
      password : 'admin',
      database: "test"
    });
    app.get('/getuser', function(req, res) {
      //get data from the request
        var data = {
            username: req.query.username
        };
        function fetchID(data, callback) {
            connection.query('SELECT id FROM users WHERE username = ?',        
                   data.username, function(err, rows) {
                if (err) {
                    callback(err, null);
                } else 
                    callback(null, rows[0].id);
            });
        }
        var user_id;
        fetchID(data, function(err, content) {
            if (err) {
            console.log(err);
            res.send(err);  
            // Do something with your error...
            } else {
            user_id = content;
            console.log(user_id);
            res.send("user id is -" + user_id);
            }
        });
    })
    app.listen(1212);
    

    Now these requests will produce this output - http://127.0.0.1:1212/getuser?username=john => user id is -1 and http://127.0.0.1:1212/getuser?username=sham => user id is -2

    Hope this code example will help you to understand the callback in node.js.

    Thanks

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