--- tags: Node.js 直播班 - 2022 春季班 --- # 🏅 Day 10 ## 拆分 Model 因專案會使用到的資料不只有一個 Collection,像是最後會完成的貼文動態牆,會使用到貼文及使用者等等資料,所有資料的 Model、Schema 都集中在 server.js,可能會造成維護、管理不易 因此可以嘗試將不同資料的 Model 拆分出來,再引入至 server.js 做使用 ### 拆分步驟 - 在專案中建立 models 資料夾 - 分別依 Collection 建立檔案,如:`posts.js`、`users.js`...等等 - 因 Schema、Model 建立都需要 Mongoose 套件,因此需記得分別在 `posts.js`、`users.js` 引入 Mongoose 套件 - 將 Schema、Model 拆出來 ```javascript const postSchema = new mongoose.Schema( ... ); const Post = mongoose.model('Post', postSchema); module.exports = Post; ``` - 接著引入 models 資料夾中的 Model 到 server.js,即可直接針對 Model 操作新增、查詢、修改、刪除資料 註:引入 Model 時通常變數會使用大寫開頭,例如 Post、User,即可使用 `Post.create(...)` 等方式直接針對 Post 操作 ### 參考資源 [model export 模組化](https://courses.hexschool.com/courses/1670869/lectures/39252181)(章節影片) ### 題目(將答案貼在 HackMD 並提交至回報區) 嘗試將此[檔案](https://drive.google.com/drive/folders/1oRjCzs3OajeUXVroNO6QS7fNomO1hwZ0?usp=sharing)的 Model 拆分到 models 資料夾,並引入 server.js 做使用 並附上拆分後的 models 程式碼以及將 models 引入 server.js 的程式碼 提交範例 - models 資料夾 - posts.js ```javascript const mongoose = require('mongoose'); ... ``` - server.js ```javascript const __ = require('...'); ``` 回報流程 --- 請同學依照下圖教學觀看解答、回報答案:  回報格式:請在「回報區」貼上連結回報答案 (為了統計人數,請同學依序加上「報數」) <!-- 解答 - models 資料夾 - posts.js ```javascript const mongoose = require('mongoose'); const postsSchema = new mongoose.Schema({ /* Schema 可自行設計 */ }); const Post = mongoose.model( 'Post', postsSchema ); module.exports = Post; ``` - server.js ```javascript const Post = require('./model/posts'); ``` --> 回報區 --- | 報數 | 組別 / 名字 | codepen / hackMD / 其他回饋 | | ---- | -------------------- | -------------------------------------------------------------------- | | 1 | 第 6 組/ Wendy | [HackMD](https://hackmd.io/@0k_MSPdgRPujozP6w_D-bA/ryoeTQC45) | | 2 | 第 4 組/ sihle | [HackMD](https://hackmd.io/@bugbug777/HyKyXN04q) | | 3 | 第 3 組 / HedgehogKU | [HackMD](https://hackmd.io/boCWu6uTRC6fY-QifAXpEw) | | 4 | 第 11 組 / Han Lai | [HackMD](https://hackmd.io/1xZ0eC90QG6LEbdx7hWOrQ) | | 5 | 第 3 組 / Hobby | [HackMD](https://hackmd.io/@hobbyling/day10) | | 6 | 第 2 組 / Jin | [HackMD](https://hackmd.io/nAUInxSoSR2IawWf4DHPWw) | | 7 | 第 4 組 / 小宥 | [HackMD](https://hackmd.io/FGfmqKU7Ri2YyAF6IWWGhA) | | 8 | 第 2 組 / Vic | [HackMD](https://hackmd.io/Z_Xjj1ExQL-Y28s0lVg1Hw) | | 9 | 第 5 組 / Hazel | [HackMD@Hazel](https://hackmd.io/@hazelwu/day10) | | 10 | 第 3 組 / Adam Hsu | [HackMD](https://hackmd.io/@S9gD__kVTSiQUupQNn_4FQ/r13UT4AEc) | | 11 | 第 9 組 / 黃士桓 | [HackMD](https://hackmd.io/bDaeecNyTYO3avEUfiHoDA) | | 12 | Naiky | [HackMD @Naiky](https://hackmd.io/@UWBC7rrORiKaLSBg226mZg/BJN_GBCE5) | | 13 | 第 2 組 / Genos | [HackMD](https://hackmd.io/5A8AcAMeSSOA96WvjFH48g) | | 14 | 第 2 組 / peter | [HackMD](https://hackmd.io/@peterchen1024/HyPWWICVc) | | 15 | 第 8 組 / JackLee | [HackMD](https://hackmd.io/QOANa60uRd6KAHEl3I_6Eg?view) | | 16 | 第 8 組 / Hank | [HackMD](https://hackmd.io/@TFOivyvXT-qpG6SieUTfgw/rJq5pdAE9) | | 17 | 第 14 組|East | [HackMD](https://hackmd.io/ERSdNucVTqK94zHQqwCBSg) | | 18 | 第 3 組|hiYifang | [HackMD](https://hackmd.io/@gPeowpvtQX2Om6AmD-s3xw/HyTyStcV5) | | 19 | 第 12 組|Jimmy | [HackMD](https://hackmd.io/bO4G6bc6QeOs_RIJOTqfbQ) | | 20 | 第 4 組| 苡安 | [HackMD](https://hackmd.io/TmHro5X9SYCRszvR8Y0Sdw?both) | | 21 | 第 5 組| Nap | [HackMD](https://hackmd.io/@8x8YzkXNSzafUSO3LZTmUw/SypoViA49) | | 22 |第 9 組 / konstante|[HackMD](https://hackmd.io/PJdgtCp2See-63nO6iY5Nw)| | 23 |第 13 組 / KFC |[HankMD]('https://hackmd.io/qSWr6tjxTkyFUC_GugR64w?view')| | 24 |第 1 組 / snow | [HackMD](https://hackmd.io/@snowsuika/BJ7_e60Vq) | | 25 |第 2 組 / wendy.li | [HackMD](https://hackmd.io/mDLUdTi4QiK2qTRTxOyD8Q) | |26|第14組/uniza| [HackMD](https://hackmd.io/Wjp5EvhgR1mCx0QodnXPQw?both) | 27 |第 3 組 / Justin | [HackMD](https://hackmd.io/R1bmFPgdSdmJOjS1gnywKw) | | 28 | 第 3 組 / Larry |[HackMD](https://hackmd.io/u1p2jE0bQF-Pwx_-VgD3dg)| | 29 | 第 2 組 / joe Chang |[HackMD](https://hackmd.io/uaRTw9c0TgOrADyXMmGL0Q?view#421---%E6%8B%86%E5%88%86-Model)| | 30 | 第 1 組 / Claire |[HackMD](https://hackmd.io/YOjvpGuUQQuWpCOt9IghZg)| | 31 | 第 1 組 / Jerry Huang |[codepen](https://codepen.io/sun31483/pen/MWrRmRQ?editors=1010)| | 32 | 第 2 組 / Rikkubook |[HackMD](https://hackmd.io/NifQO2i0SDmN7op5dbo_pg?both)| | 33 | 第7組/Tracy Chien | [HackMD](https://hackmd.io/@H0MPUhcWR12nImVv1qJyLA/r1VErxZr9) | 34 | yolala| [HackMD](https://hackmd.io/PooWrAqtQAOQZjCZAliZ9A) | 35 | 第 15 組 / Chiu| [HackMD](https://hackmd.io/AsKLGQkKR-27VzZsAccw6g) | 36 | 第 7 組 / jason06286| [HackMD](https://hackmd.io/RZvcVMOUTR2yeI0Q2E0NnQ) | 37 | 第 15 組 / Tofu | [HackMD](https://hackmd.io/uk_KCkZeSc2feWfCBbPBYQ?view) | 38 | 第 10 組 / 橘子 | [HackMD](https://hackmd.io/ytRgr1XyT1uOg4oyBdqBtQ) | 39 | 第 1 組 / Phoebe | [HackMD](https://hackmd.io/@Phoebe26/rJ0RcqQHq) | 40 | 第 16 組 / 皓皓 | [HackMD](https://hackmd.io/@cutecat8110/B1LD0cmH9) | 41 | 第 17 組 / 程翔 | [HackMD](https://hackmd.io/IxlRQixlTFulRAjgL-mBwA) | 42 | 第 1 組 / Ed | [HackMD](https://hackmd.io/A_W1dQPjTGqp-DBZ6iaOtw?view) | 43 | 第 8 組 / Jordan Tseng | [HackMD](https://hackmd.io/kDYWPtsaS9m3Ki9mQz_LSw) | 44 | 第 10 組 / Otis | [HackMD](https://hackmd.io/@wAXXVY7eQ2WkcVtv8Vopzg/SJlat_BSq) | 45 | 第 3 組 / 小葉 | [HackMD](https://hackmd.io/@FyKv37KcRSWqAO_e336w8g/rkdkoH8S5) | 46 | 第 11 組 / Jamie Lee | [HackMD](https://hackmd.io/_OKpui0PRyCK81mfoCvtmg?view) | 47 | 第 9 組 / Reynold | [HackMD](https://hackmd.io/@dL7AuQEMQ6KpCSRHaYElOA/rkGvkk_S5) | 48 | 第 11 組 / mandy | [HackMD](https://hackmd.io/-Kl6J2K4QFOuFYFvPia1SA) | 49 | nick6303 | [HackMD](https://hackmd.io/TGgfDvj7QD6BxKhrc19ffQ) | 50 | 第 1 組 / Emily Hsi | [HackMD](https://hackmd.io/@EmilyHsi/rynvF_6Hq) | 51 | 第 10 組 / Butters | [HackMD](https://hackmd.io/ytRgr1XyT1uOg4oyBdqBtQ?view) | 52 | 第 14 組 / 皮皮 | [HackMD](https://hackmd.io/X-IMDqG0SO-YdAVU8B_VPA)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up