nodejs查询mysql使用Promise作为回调

Posted 胖鹅68

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs查询mysql使用Promise作为回调相关的知识,希望对你有一定的参考价值。

文章目录

背景说明

使用mysql 数据库查询数据,当业务逻辑牵涉到多张表的时候,就会陷入`回调陷阱`,因此想借用前端Promise对象,来解决这个问题。
如果是针对多个service,也可以借用promise.all函数来解决,优化自己的代码

案例说明

连接mysql数据库

var mysql  = require('mysql');
var connection = mysql.createConnection(
    host     : '127.0.0.1',
    user     : 'root',
    password : '123456',
    port: '3306',
    database: 'weather',
);
connection.connect();
module.exports = connection;

定义service,使用promise作为回调

var mysqlConn = require('../common/mysqlConn');
const dataService = 
	// 查询最新的数据
	queryLatistDatasPromise: function (userCallback) 
		var promiseObj = new Promise(function(resolve, reject)
			mysqlConn.query(
				'select * from w_data ORDER BY id desc limit 0,1',
				[],
				function selectCb(err, results, fields) 
					// resolve 只能传递一个参数
					resolve(
						err: err,
						results: results,
						fields: fields
					);
				
			);
		);

		return promiseObj;
	

module.exports = dataService;

Controller使用then方法获取mysql查询的数据

var dataService = require('./service/dataService');
var router = express.Router();
// 获取最新的data数据
router.post('/getLatistData',function (req,res,next) 
    dataService.queryLatistDatasPromise().then(function(serviceResp)
        var results = serviceResp.results;
        var newResults = utilsObj.formatArrayOfDate(results, "time", 'YYYY-MM-DD  hh:mm:ss');
        if(results.length > 0) 
            res.json(
                state: 1, // 1表示状态成功, 0表示失败
                dataObj: newResults[0],
            );
        else 
            res.json(
                state: 1, // 1表示状态成功, 0表示失败
                message: '没有数据',
            );
        

    );
);

以上是关于nodejs查询mysql使用Promise作为回调的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 Nodejs Postgres 查询的数据 [重复]

nodejs如何判断数据库操作是不是执行完毕

连接太多 Nodejs + mysql2/promise

使用 mySQL 和 nodejs 传递承诺

nodejs 优雅的连接 mysql

NodeJS,mysql2/promise,连接池执行,将数据复制到另一个数据库