最近公司有一部分新的教育視頻要發(fā)布,視頻文件會(huì)掛載到課本對(duì)應(yīng)的章節(jié)目錄下。程序的后臺(tái)是用tp寫的,數(shù)據(jù)庫用的mysql,而我是搞nodejs的,一直用nodejs搞mongodb??吹竭@里你已經(jīng)發(fā)現(xiàn)了很多的不搭調(diào)。基于我個(gè)人,我一直想嘗試使用sequelize玩下nodejs操作mysql。OK,這是一個(gè)契機(jī)。于是,我想到了這樣一個(gè)處理方式:
- 將視頻文件按章節(jié)目錄存到對(duì)應(yīng)的文件夾下;
- nodejs遍歷文件夾將視頻文件讀出,封裝成一個(gè)數(shù)據(jù)對(duì)象,包含視頻對(duì)應(yīng)的章節(jié)等信息;
- 使用map方法,將對(duì)象轉(zhuǎn)換成異步函數(shù),之后nodejs發(fā)起多個(gè)異步操作;
- 通過sequelize,獲取數(shù)據(jù)庫中到對(duì)應(yīng)章節(jié)的ID(chapter_id)和電子書的ID(book_id);
- 通過request模塊,將視頻文件上傳給php接口,php接口將文件保存好后返回?cái)?shù)據(jù)庫中的文件ID(file_id);
- 最后,將三個(gè)ID的關(guān)系寫入數(shù)據(jù)庫。
原先我比較習(xí)慣使用async,但當(dāng)我發(fā)現(xiàn)sequelize的使用方法后,我覺得我是時(shí)候向大神靠攏了,還是乖乖使用promise吧。程序的原理其實(shí)挺簡(jiǎn)單,但是我玩遍了sequelize、promise和request上傳文件,覺得好高興,最重要的是,我覺得簡(jiǎn)書真的是個(gè)好東西,于是我想用markdown在這上面寫上第一篇文章,于是,你看到了這里。謝謝!