node 事务 初探

  最近使用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);
                               }
                           })
                       }
                   });



               }
           });
       }
   });

经过测试,可以运行。

有时间记录下来,以后工作如果有需要,可以直接使用。

你可能感兴趣的:(node)