Comment retourner une valeur à partir d'une requête mysql node.js

Je suis encore très nouveau pour Node.js et j'essaie de comprendre comment les rappels de travail.
Donc, voici mon problème :

J'aurais dû mettre plus de code :

POST :

app.post('/register', function(req, res) {

    //get data from the request
    var data = {
        username: req.body.username,
        email: req.body.email,
        password: req.body.password
    };

    function fetchID(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);
        });
    }
    var user_id;
    fetchID(function(err, content) {
        if (err) {
            console.log(err);
            return next("Mysql error, check your query");
        } else {
            user_id = content;
            console.log(user_id); //undefined
        }
    });

    console.log(user_id); //undefined
    var payload = {
        iss: req.hostname,
        sub: user_id
    }
    console.log(payload.sub); //correct id
})

OBTENIR :

app.get('/todos', function(req, res) {
    if (!req.headers.authorization) {
        return res.status(401).send({
            message: 'You are not authorized !'
        });
    }

    var token = req.headers.authorization.split(' ')[1];
    var payload = jwt.decode(token, "shhh..");

    //additional level of security
    console.log('sub id is : ' + payload.sub); //undefined
    if (!payload.sub) {
        return res.status(401).send({
            message: 'Authentication failed !'
        });
    }

})

J'ai commenté chaque console.journal d'être plus clair. J'ai besoin d'obtenir l'id correct quand je vérifie pour if (!payload.sub) dans l'app.get()

Est le user_id variable undefined si vous console.log(user_id) droite après la mise en else déclaration ou lorsque vous l'utilisez pour définir payload.sub?
pour votre première fonction, function fetchID(callback) où est data objet est passé?

OriginalL'auteur redAce | 2015-02-21