node開發

1. 國內使用npm安裝某些插件的時候,偶爾會有網絡問題,能夠使用cnpm:(後續全部使用 npm 沒法正常安裝的,都改爲 cnpm 試試)node

  a. 首先使用 npm 安裝 cnpm:npm install -g cnpm --registry=https://registry.npm.taobao.orgpython

  b. 使用 cnpm -v 查看版本號:mysql

    

2. 使用ORM插件sequelize,及自動生成表對象插件sequelize-auto。git

  官方地址:github

  https://github.com/sequelize/sequelizesql

  https://github.com/sequelize/sequelize-auto數據庫

  a. 使用 npm 安裝 sequelize : npm install sequelizenpm

  b. 而後全局安裝 mysql 及 sequelize-auto :npm install -g mysql sequelize-auto網絡

  c. 按文檔使用命令行生成 model 文件:sequelize-auto -o "./xxxx/model/" -d database_name -h 192.168.1.1 -u sa -p 3306 -x 123456 -e mysql函數

    其餘參數查閱 https://www.npmjs.com/package/sequelize-auto

  d. 檢查文件夾 「./xxxx/model/」 下是否已經生成model對應文件,文件名與數據庫表名相同。

3. 修改 sequelize-auto 的 model 模板,爲 model 增長構造函數。

  a. 找到 sequelize-auto 的 model 模板:C:\Users\XXX\AppData\Roaming\npm\node_modules\sequelize-auto\lib\index.js

  b. 目前的版本是20161201提交的,大概在300行的位置,修改代碼以下:

    

      //因爲增長後續代碼,註釋掉移除逗號相關代碼 by MikeJia 20161212
      //text[table] = text[table].trim()      
      //text[table] = text[table].substring(0, text[table].length - 1);
      //********************************************************
      //region add by MikeJia 20161212
      var params="";
      var setAttr="";
      _.each(fields, function(field, x){
          //自動編號列不列在構造函數中
          var isSerialKey = self.tables[table][field].foreignKey && _.isFunction(self.dialect.isSerialKey) && self.dialect.isSerialKey(self.tables[table][field].foreignKey)
          if(!isSerialKey){
            params += field + ",";
            setAttr += "'" + field + "':" + field + ",";
          } 
      });

      params = params.substring(0, params.length - 1);
      setAttr = "{" + setAttr.substring(0, setAttr.length - 1) + "}";
      text[table] += spaces + spaces + "classMethods: {\n";
      text[table] += spaces + spaces + spaces + "getInstance:function(" + params + ") {\n";
      text[table] += spaces + spaces + spaces + spaces + "return " + setAttr + ";\n";
      text[table] += spaces + spaces + spaces + "}\n";
      text[table] += spaces + spaces + "}";
      //regionend add by MikeJia 20161212
      //********************************************************

 4. 使用 sequelize-auto 模板生成 model 後,mysql 數據庫沒法保存時間到毫秒。

  a. 查看 model 會發現,datetime 類型的字段被設置爲 ‘DataTypes.DATE’,該類型沒法保存時間到毫秒。有兩個解決方案:

    I. 修改 sequelize 源碼

    II. 修改 sequelize-auto 模板

    第二種簡單一點。

  b. 打開3.中提到的 sequelize-auto 模板文件。目前的版本是20161201提交的,大約238行左右,將原有代碼註釋掉,修改成 DateType.STRING 。代碼以下:    

            else if (_attr.match(/^(date)/)) {
              val = 'DataTypes.STRING'
              //val = 'DataTypes.DATE';
            }
            else if (_attr.match(/^(time)/)) {
              val = 'DataTypes.STRING'
              //val = 'DataTypes.TIME';
            }

 

 5. 使用ab進行測試

  a. 直接使用npm安裝:npm install ab 。參考 https://www.npmjs.com/package/ab

  b. 若是報錯 「gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.」,須要安裝python,官網下載(https://www.python.org/downloads/)。

相關文章
相關標籤/搜索