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/)。