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作为回调的主要内容,如果未能解决你的问题,请参考以下文章