如何用Eggjs從零開始開發乙個專案(3)

2022-05-10 11:17:56 字數 1836 閱讀 9204

獲取token中的資料;

通過model來同步資料庫。

使用者登入的時候我們已經使用者的一些基本資訊加密儲存到token中,通過路由配置我們能簡單的去控制哪些介面需要登入,哪些介面不需要登入,但是如果再細化到使用者或者使用者角色,只是從路由層面就難以控制了,我們需要拿到使用者資訊,並將使用者資訊儲存在session中,方便我們隨時取用。那要怎麼做呢?這裡我們需要編寫乙個中介軟體來實現這個功能。**如下:

module.exports = options => catch (error) ;

return;

}} else ;

return;}};

};這裡說明一下eggjs的外掛程式機制,如果你在config.default.js中配置:

config.middleware = ['eggjwt'];
那麼,這個外掛程式將作用於所有的路由,除非有特殊配置,但是這裡我們不需要,所以不加這一行**。我們按需配置:

router.get('/', controller.home.index);

router.post('/createuser', jwt, controller.user.createuser);

router.get('/getusers', jwt, controller.user.getusers);

router.post('/register', controller.user.register);

router.post('/login', controller.user.login);

};我們手動引入後按需配置即可。

這個時候我們去訪問配置了jwt的介面,就會執行外掛程式,解析token,並將解析結果儲存到session裡。我們修改一下user controller的**試一下:

async getusers() ;

}

配置好token後請求localhost:7001/getusers,資料能正常返回,同時控制台列印出了:

**********=
可以看到這時我們就拿到了token裡儲存的資料。

按照我們現在的**,如果我們需要調整model中的字段,我們需要修改model檔案,然後再寫指令碼同步修改資料庫中的字段,這樣太麻煩了。幸好,sequelize提供了乙個方法讓我們可以根據model去同步資料庫裡的字段:

注意我們這裡只能用user.sync(),那麼要在什麼時候去執行呢?我們想在每次服務啟動時去同步資料庫字段,同時eggjs也提供了生命週期供我們使用:

}configwillload()

async didload()

async willready()

async didready()

async serverdidready()

}這時,我們在user model中新增乙個字段:nickname: string(10),然後重啟一下服務,開啟資料庫看看user表,果然多了乙個nickname的列。這個功能極大地方便了我們去同步model與資料庫字段,但是操作的時候也要小心,不要誤刪字段。

從零開始學習敏捷開發(一)

一 敏捷開發 歷史背景 20世紀60年代 軟體作坊,軟體規模小,以作坊式開發為主 70年代 軟體危機,硬體飛速發展,軟體規模和複雜度激增,引發軟體危機 80年代 軟體過程控制,引入成熟生產製造管理方法,以 過程為中心 分階段來控制軟體開發 瀑布模型 一定程度上緩解了軟體危機 90年代 重型過程,軟體...

PyTorch從零開始(一)

之前嘗試過tenano,caffe,keras,tensorflow,這幾個我個人最喜歡的還是tensorflow,因為是google出品,技術崇拜,文件很全,並且我看的deepmind的 都是用的tensorflow框架。之前看的目標檢測的 一般用caffe的很多,人臉識別方面也是caffe是主流...

SpringBoot從零開始(一)

上來先看的這篇部落格 idea新建乙個springboot mybatis mysql專案,以及遇到的問題分享。在其中第9步自動生成的過程中,出現了錯誤如下 the server time zone value is unrecognized or represents more than one ...