最近使用node比较多,由于刚开始接触,对node不是很熟悉,所以有时间就研究一下,先从事务的使用开始:
pool.getConnection((err, connection) => {
if(err) {
console.error('链接错误:' + err.stack + '\n' + '链接ID:' + connection.threadId)
reject(err)
} else {
connection.beginTransaction( err => {
if(err) {
return connection.rollback(() => {
console.log('插入失败数据回滚');
reject(e);
})
} else {
//sql语句是随便写的,这儿写的是一个分页,当然,在实际应用中,是不需要使用事
//务的,该处只是为了说明之用
let sqlCount = `select count(*) from ap_category `;
console.log(sqlCount);
connection.query(sqlCount, (e, v, f) => {
if (e) {
reject(e);
}
else {
// resolve(v);
const num = 1; //这里给出一条测试数据
const pageSize = conf.pageSize; //从配置文件中读取数据
let count = v[0]["count(*)"];
let pageCount = Math.ceil( count / pageSize);
let startIndex = ((num-1)*pageSize >= 0)?(num-1)*pageSize:0;
let sqlList = `select * from ap_category limit `+startIndex+`,`+pageSize+``;
if(!startIndex && !pageSize){
sqlList = sqlList.split("limit")[0];
}
console.log(sqlList);
connection.query(sqlList, (e, v, f) => {
if (e) {
reject(e);
}
else {
connection.commit((e) => {
if(e) {
reject(e);
}
})
connection.release(); // 释放链接
resolve(v);
}
})
}
});
}
});
}
});
经过测试,可以运行。
有时间记录下来,以后工作如果有需要,可以直接使用。