egg.js與mysql的結合使用,以及部署事項


最近使用egg.js寫了一個小項目練手,主要用來封裝接口以及代理接口。進入正題:

egg搭建以及各項配置 可以詳見官方文檔:https://eggjs.org,這里簡單描述一下:

1.直接使用腳手架快速搭建項目,命令如下:

    (1)npm i egg-init -g;

 (2)新建egg-demo文件夾,執行命令:egg-init egg-demo --type=simple;

    (3)進入當前文件夾下,執行命令:npm i;

 (4)啟動項目:npm run dev;

           在瀏覽器中打開:localhost:7001

           注意:這里默認地址是7001,如果修改,可以在package.json里面配置:egg-scripts start --port=要修改的端口號 --daemon --title=egg-server-egg-demo.

2.實現接口:

    (1)在controller文件夾下,新建自己的文件,開始業務書寫,這里個人建議可以新建service文件夾,在里面書寫自己的復雜業務邏輯,而controller用來接收返回給頁面展示;

  (2)plugin.js用來定義插件;config.default.js用做基本配置,同時自己也可以新建文件來區分開發環境、測試環境以及線上環境;

 (3)代理接口,可以參考 https://blog.csdn.net/baidu_33438652/article/details/81736832

    這里簡單說一下get、post兩種常用的請求方法。

    get:

      const result = await this.ctx.curl(代理的接口地址,{dataType: 'json'});

    post:

      const result = await this.ctx.curl(代理的接口地址,{
        // 必須指定 method,默認為get
        method:'POST',
        // 通過 contentType 告訴 HttpClient 以 JSON 格式發送
        contentType: 'json',
        data: 請求參數,
        // 明確告訴 HttpClient 以 JSON 格式處理返回的響應 body
        dataType: 'json'
      });

3.mysql數據庫使用:

    (1)mysql安裝:npm i egg-mysql  --save,然后在plugin.js里面配置如下:       

  exports.mysql = {
    enable: true,
    package: 'egg-mysql',
  };

  config.default.js配置如下:

    config.mysql = {
      client: {
        // host
        host: '',
        // 端口號
        port: '',
        // 用戶名
        user: '',
        // 密碼
        password: '',
        // 數據庫名
        database: ''
      },
      // 是否加載到 app 上,默認開啟
      app: true,
      // 是否加載到 agent 上,默認關閉
      agent: false,
    };

     這里建議本機安裝mysql數據庫(https://dev.mysql.com/downloads/file/?id=481160),以及navicat界面管理工具,這樣就可以驗證自己有沒有操作數據庫。

  (2)數據庫的增刪改查語法,官網都有實例,可以參考,這里對更新數據庫簡單說一下:

    let row = {

      password(修改的字段): newPassword(要修改的值)
    },
    options = {
      where: {
        username(查詢的條件):username(查詢的值),
      }
    };
    await this.app.mysql.update('數據庫名', row, options);

 

       注意:mysql服務器沒有開啟,或者配置有誤,都會造成項目運行時報錯,對應修改就可以了~~~  

3.redis使用:

  寫接口時,一定會遇到數據存儲的問題,這個時候我們通常采用redis存儲數據,而非cookie或者storage(一般用於客戶端存儲)。

  (1)redis安裝:npm i egg-redis --save,然后在plugin.js里面配置如下:       

    exports.redis= {
      enable: true,
      package: 'egg-redis',
    };

    config.default.js配置如下:

      config.redis = {
        client: {
          port:, // Redis port
          host: '', // Redis host
          password: '',//密碼
          db: 1//存儲區
        }
      };

               注意:redis本身不需要密碼的(可以設置),但是在redis配置時,password為必須的,否則會報錯,大家可以自行驗證。

  (2)redis用法(可以下載RedisDesktopManager界面管理工具查看存儲情況。):

    a.正常存儲用法:await app.redis.set('key值', 存儲值);

    b.一般我們也會遇到對例如token這樣存儲值時效的設置,代碼如下:await app.redis.set('key值', 存儲值,'EX',seconds);

    c.也可以通過命令行設置:

       命令啟動方法:

       通過cmd命令到redis msi(個人安裝包存放位置)目錄下,執行命令,如:f:\software\redis msi>redis-server.exe redis.windows.conf;

       新開窗口執行 F:\software\redis msi>redis-cli.exe -h 127.0.0.1 -p 6379。

       然后輸入命令:expire key seconds。    

4.項目部署與應用:

 (1)在該文件下打包,生成tgz文件:tar -zcvf ../FileName.tgz .

 (2)環境部署(建議下載Xshell客戶端,當然別的工具都可以,根據個人喜好~~~):     

    a.進入要部署的服務器對應文件夾下,cd 等等;

    b.//創建文件 mkdir 文件名稱;

    c.打開壓縮包: rz -be;

    d.解包:tar zxvf FileName.tar;

    e.移除壓縮包: rm -rf  FileName.tar

  然后就可以啟動啦:npm start即可。

       注意:要根據自己的項目環境運行npm start,默認運行npm start為線上環境 prod,建議大家在不同環境下區分運行:

                  開發環境:egg_server_env=local npm start

                  線上環境:egg_server_env=prod npm start

                  測試環境:egg_server_env=unittest npm start

 

至此,講解完了,對於有異議或者有更好處理方法的地方上,歡迎交流與評論~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM