【问题标题】:How to call back result Mysql + Nodejs [duplicate]如何回调结果Mysql + Nodejs [重复]
【发布时间】:2019-10-16 02:39:38
【问题描述】:

我正在尝试获取从数据库返回的结果,根据一些我必须使用回调的文件,我正在尝试但结果仍然未定义,请帮助我

// app.js file
var db = require('./database');
var access_token;

db.page_access_token(page_id, function(err, content) {
    if (err) {
        console.log(err);
    } else {
        access_token = content;
        console.log(access_token); // response conrrect
    }
});
console.log(access_token); // response undefined

// database.js file
module.exports = {

    page_access_token : function(page, callback){
        conn.query('SELECT access_token FROM facebook_pages WHERE ?', {page : page}, function(err, row) {
            if (err) {
                callback(err, null);
            } else 
                callback(null, row[0].access_token);
        });
    }

}

【问题讨论】:

    标签: mysql node.js express callback


    【解决方案1】:

    数据库调用是异步的(完成执行需要时间)。您在回调中为 access_token 赋值,并且在回调函数之外记录 access_token 变量。这里,access_token 是未定义的,因为回调函数之外的 console.log() 在回调函数中的 console.log() 之前执行,因为它是异步操作。如果您需要在回调之外使用 access_token,则编写一个函数并将 access_token 作为参数传递给该函数。 例如 -

    db.page_access_token(page_id, function(err, content) {
        if (err) {
            console.log(err);
        } else {
            access_token = content;
            doSomeWork(access_token);
            console.log("Access token in callback -->>"+ access_token); 
        }
    });
    
    function doSomeWork(acc_token){
       console.log("Access token in doSomeWork -->>"+ acc_token);
    }
    
    

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 2018-05-26
      • 2020-05-11
      • 2013-01-30
      • 1970-01-01
      相关资源
      最近更新 更多