• 记录nodejs做编辑和新增时候对数据库的操作


     server.js文件
    const dao = require("../dao/user.dao");
    saveDat是个对象自己处理一下
    if (updataFlag) {//编辑角色
             result = await dao.roleUpdata(saveDta);
          } else {//新增角色
             saveDta.role.create_name = user.name;
             saveDta.role.code = need.code;
             result = await dao.roleAdd(saveDta);
          }
    
          return result;

    编辑角色

    dao文件就是上面引入的文件 
    roleUpdata(need) {
         const dcMeun = "表名"
          let list = [];//编辑过来的先删除库里面的按角色code删除所有
          let roleProductMap = db.remove(dcMeun, {
             role_code: need.code
          }, true)
          list.push({
             sql: roleProductMap.sql,
             param: roleProductMap.param
          })
          //如果有选择产品 往库里面批量增加
          if (Array.isArray(need.products) && need.products.length > 0) {
             let addProduct = db.bulkCreate(dcMeun, need.products, true)
             list.push({
                sql: addProduct.sql,
                param: addProduct.param
             })
          }
          return db.execTransaction(list);
       },

        /**
         * 批量增加数据
         * @param table 表名
         * @param moduleBean 要添加的字段 [ {字段名:字段值}]
         * 例:db.bulkCreate(tableName, [{id:'12', name:'jerry'}, {id:'115', name:'hou'}]);
         */
        bulkCreate(table, moduleBean, isConfig) {
          let attributes = new Set();
          let values = [];
          moduleBean.forEach(ele => {
            let value = [];
            for (var key in ele) {
              attributes.add(key);
              value.push(ele[key]);
            }
            values.push(value);
          });
          var _sql = `INSERT INTO ${table}(${Array.from(attributes).join(',')}) VALUES ? `;
          if (isConfig) {
            return {
              sql: _sql,
              param: [values]
            }
          } else {
            return this.execSql(_sql, [values]);
          }

        },
       /**
         *  自定义 SQL 语句
         * 【注】表名一定要用??两个问号
         */
        execSql(sql, values, field = false) {
          return new Promise((resolve, reject) => {
            pool.getConnection(function (err, connection) {
              if (err) {
                connection && connection.release();
                reject(err);
              } else {
                var query = connection.query(sql, values, (err, rows, fields) => {
                  connection.release();
                  if (err) {
                    reject(err);
                    process.logger.error("SQL Error:[", err, "]");
                  } else {
                    if (field) {
                      resolve({
                        data: rows,
                        fields: fields
                      });
                    } else {
                      resolve(rows);
                    }
                  }
                });
                process.logger.trace("Current Exec SQL:[", query.sql, "]");
              }
            });
          });
        },
      /**
        * 开启事务处理
        * @param sqlParamList sql语句和参数对象数组
        例:
        db.execTransaction([{
          sql: "INSERT INTO ?? SET?",
          param : [table, entity],
          callback: function(result){
          //执行成功回调
          console.log(result);
        }
        },{
          sql: "INSERT INTO ?? SET email=?",
          param : [table, 'lixia@goinni.com'],
          callback: function(result){
          console.log(result);
          }
        },{
          sql: "INSERT INTO ?? SET email=?",
          param : [table, 'limeizhen@goinni.com']
        }]);
        */
        execTransaction(sqlParamList) {

          return new Promise((resolve, reject) => {

            pool.getConnection(function (err, connection) {
              if (err) {
                resolve(err);
              } else {
                connection.beginTransaction(function (err) {

                  if (err) {
                    reject(err);
                    connection.release();
                    //throw err;
                  }
                  var n = 0,
                    res = [];
                  // 递归处理多条 SQL 语句
                  function ac(sqlParamList) {
                    var item = sqlParamList[n];
                    var qr = connection.query(item.sql, item.param, function (error, results, fields) {
                      res.push(results); //缓存结果,统一返回
                      if (error) {
                        return connection.rollback(function () {
                          //throw error;
                          reject(error);
                          connection.release();
                        });
                      }
                      process.logger.trace(`Current Exec SQL:[${qr.sql}]`);
                      if (n === sqlParamList.length - 1) {
                        // 最后统一提交
                        connection.commit(function (err) {
                          if (err) {
                            return connection.rollback(function () {
                              //throw err;
                              reject(err);
                              connection.release();
                            });
                          }
                          resolve(res);
                          connection.release();
                          process.logger.info('Transaction Success!');
                        });

                      } else {
                        n++;
                        //将结果回传给当前方法,方便后续使用
                        item.callback && item.callback(results);
                        //递归
                        ac(sqlParamList);
                      }
                    });
                  }

                  ac(sqlParamList);

                });
              }
            });
          });
        },
     

    新增角色

       roleAdd(need) {
          let list = [];
          //新增就直接批量增加了
          if (Array.isArray(need.products) && need.products.length > 0) {
             let productAdd = db.bulkCreate(dcMeun, need.products, true)
             list.push({
                sql: productAdd.sql,
                param: productAdd.param
             })
          }
          return db.execTransaction(list);
       },
    里面的
    bulkCreate和execTransaction函数都和上面编辑的一模一样
    
    
  • 相关阅读:
    Java实现 LeetCode 799 香槟塔 (暴力模拟)
    Java实现 LeetCode 799 香槟塔 (暴力模拟)
    ASP.NET中使用Entity Framework开发登陆注册Demo
    ASP.NET中使用Entity Framework开发登陆注册Demo
    ASP.NET中使用Entity Framework开发登陆注册Demo

    requirejs
    转一个网址,canvas用法
    这是个排序,摘的,记一下
    今天面前端哦 2015 08 27
  • 原文地址:https://www.cnblogs.com/ht955/p/15892174.html
Copyright © 2020-2023  润新知