mysql - 如何从nodejs中的嵌套函数返回数据库结果

标签 mysql node.js

我想要其他文件上的结果,但不知道如何返回它

function getUsers(){
console.log("Fetching all user data");

const connection = getConnection();
const sql = "SELECT * FROM users";
var result = connection.query(sql,(err, rows, fields) =>{

    if(err){
        console.log("Failed to get users data");
        res.sendStatus(500);
        throw err;
    }

    console.log("Fetched Users Successfully");
    return rows;
})

return result;
}

最佳答案

为函数创建文件:getUsers.js

 module.exports = async getUsers(){

    const connection = getConnection();
    const sql = "SELECT * FROM users";

    var myPromise = () => {
        return new Promise((resolve, reject) => {
            connection.query(sql, query.params, function (error, results, fields) {
                error ? reject(error) : resolve(results);
            })

        });
    }
    var result = await (myPromise());
    return result;
}

需要这个文件并调用函数:

var getUsers = require('..path to getUsers');

var data =  getUsers().then((data)=>{

}).catch((error)=>{
    console.log('error',error)
    return error;
});

使用回调:

或使用回调函数:

 module.exports = function getUsers(callback){

const connection = getConnection();
const sql = "SELECT * FROM users";

  connection.query(sql, query.params, function (error, results, fields) {
      if(error){ callback(error,null)}  
      if(!error && results){
         callback(null,results)
      }
  });
}

需要文件:

var getUsers = require('..path to getUsers');

这样调用它:

getUsers(err,data)=>{
   if(err){
      return res.send(err);
   }
   if(!err && data){
     return res.send(data);
   }
}

关于mysql - 如何从nodejs中的嵌套函数返回数据库结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58727999/

相关文章:

MySQL 存在使查询花费太长时间

mysql - 计算并连接两个表

java - 将sql输出保存在文本文件中

node.js - 错误命令失败,退出代码为 1。当我尝试运行 yarn 时

javascript - Node.js fs ENOENT 错误

node.js - ioHook on Electron 消耗太多 CPU。反正周围有吗?或者替代ioHook

python - 通过python在mysql中插入和检索图像

mysql - 将文本字段保留在 MySql 表行中还是在单独的表中并加入会更好吗?

node.js - Mongoose 通过 ObjectId 查找

node.js - 在 cordova(3.0.0) 中添加 blackberry10 平台显示 "Error: node cannot be found on the path. Aborting"