Javascript 从Node.js函数回调中获取MySQL结果的正确方法?

Javascript 从Node.js函数回调中获取MySQL结果的正确方法?,javascript,node.js,callback,Javascript,Node.js,Callback,从GetAllFarms中获取MySQL查询结果并将其放入名为err和farms的变量的正确方法是什么?抱歉,正在进行快速代码尝试,并且来自不同的语言 var err, farms = GetAllFarms() console.log("GetAllFarms:") console.log(farms) console.log(err) function GetAllFarms(callback) { query = db.query("SELECT * FROM farms ",

从GetAllFarms中获取MySQL查询结果并将其放入名为err和farms的变量的正确方法是什么?抱歉,正在进行快速代码尝试,并且来自不同的语言

var err, farms = GetAllFarms()
console.log("GetAllFarms:")
console.log(farms)
console.log(err)


function GetAllFarms(callback) {
    query = db.query("SELECT * FROM farms ", function (err, result) {
        console.log("DEBUG:QUERY//");
        console.log(query.sql);
        // console.log(result)

        if (err) {
            // console.log(err)
            return callback(err, null)
        } else {
            // console.log(result)
            return callback(null, result)
        }
    });

    // db.end()

    console.log("query")
    console.log(query.result)

    return query
}

非常感谢您的帮助。谢谢

您必须决定是通过回调还是返回提供结果。别把它们混在一起,容易混淆

回调方法

var err,farms=GetAllFarms console.logGetAllFarms: 控制台:logfarms console.logerr 函数getAllFarmScalBack{ query=db.querySELECT*FROM farms,函数错误,结果{ console.logDEBUG:QUERY/; console.logquery.sql; //console.logresult 如果出错{ //console.logerr 返回callbackerr,null }否则{ //console.logresult 返回callbacknull,结果为空 } }; //db.end console.logquery console.logquery.result } //用法 GetAllFarmserror,结果=>{ 如果错误{ //处理错误 } //过程结果 } 承诺方法

var err,farms=GetAllFarms console.logGetAllFarms: 控制台:logfarms console.logerr 函数GetAllFarms{ 返回新的Promiseresolve,rejct=>{ db.querySELECT*FROM farms,函数错误,结果{ console.logDEBUG:QUERY/; console.logquery.sql; 如果出错{ 返回拒绝错误 }否则{ 返回解析结果 } }; }; } //用法 异步=>{ const res=等待GetAllFarms; //或 GetAllFarms.then/*…*/.catch/*…*/; }
您必须决定是通过回调还是返回来提供结果。别把它们混在一起,容易混淆

回调方法

var err,farms=GetAllFarms console.logGetAllFarms: 控制台:logfarms console.logerr 函数getAllFarmScalBack{ query=db.querySELECT*FROM farms,函数错误,结果{ console.logDEBUG:QUERY/; console.logquery.sql; //console.logresult 如果出错{ //console.logerr 返回callbackerr,null }否则{ //console.logresult 返回callbacknull,结果为空 } }; //db.end console.logquery console.logquery.result } //用法 GetAllFarmserror,结果=>{ 如果错误{ //处理错误 } //过程结果 } 承诺方法

var err,farms=GetAllFarms console.logGetAllFarms: 控制台:logfarms console.logerr 函数GetAllFarms{ 返回新的Promiseresolve,rejct=>{ db.querySELECT*FROM farms,函数错误,结果{ console.logDEBUG:QUERY/; console.logquery.sql; 如果出错{ 返回拒绝错误 }否则{ 返回解析结果 } }; }; } //用法 异步=>{ const res=等待GetAllFarms; //或 GetAllFarms.then/*…*/.catch/*…*/; }
谢谢你的推荐。对于回调,如果响应为,可能会缺少什么?TypeError:callback不是一个函数您似乎没有提供callback函数作为函数的第一个参数,我在第一段代码中添加了callback方法示例,请看一看。同时确保您提供了如下可调用函数GetAllFarms=>{}而不是像GetAllFarmsSomeFunc这样的函数的结果谢谢你的推荐。对于回调,如果响应为,可能会缺少什么?TypeError:callback不是一个函数似乎您没有提供callback函数作为函数的第一个参数,我在第一段代码中添加了callback方法示例,请看一看。还要确保您提供了像GetAllFarms=>{}这样的可调用函数,而不是像GetAllFarmssomeFunc这样的函数的结果