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

标签 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 ", 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.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)
}

// usage
GetAllFarms((error, result) => {
    if (error) {
      // handle error
    }
    // process result
})

promise 方法

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


function GetAllFarms() {
    return new Promise((resolve, rejct) => {
    db.query("SELECT * FROM farms ", function (err, result) {
          console.log("DEBUG:QUERY//");
          console.log(query.sql);

          if (err) {
              return reject(err)
          } else {
              return resolve(result)
          }
      });
  });
}

// usage
(async () => {
  const res = await GetAllFarms();
  // or 
  GetAllFarms().then(/* ... */).catch(/* ... */);
})

关于javascript - 从 Node.js 函数回调获取 MySQL 结果的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61605905/

相关文章:

javascript - 在 yui 中获取窗口滚动或 scrollY 位置

node.js - org.springframework.web.multipart.MultipartException : Could not parse multipart servlet request. ..流意外结束

node.js - 在 Node.js 中发送多个 HTTP 请求 : Not receiving any responses or timeouts

javascript - 将数据保存在数据库问题中,在控制台上收到 NULL

c++ - 在 Visual Studio 2008 中使用 C++ 创建简单 COM 组件的示例

javascript - 将 C# 模型转换为 Angular 模型

javascript - 我需要帮助才能在 Xcode 中创建的简单 webview 应用程序中运行 Javascript Alert 和 Confirm

javascript - 本地存储搞乱了我的变量增量

jquery - 为什么需要 e.preventDefault

javascript - 已添加类型 “…” 消息的未捕获处理程序