---
# System prepended metadata

title: "\U0001F3C5 Day 8"
tags: [Node.js 直播班 - 2022 春季班]

---

---
tags: Node.js 直播班 - 2022 春季班
---
# 🏅 Day 8



## Schema 補充



### Schema Options

建立 Schema 時，Mongoose 也有提供一些可調整的設定
```
new mongoose.Schema({..}, options);
```
在 `Schema()` 中第一個參數放 Schema，第二個參數可以調整設定
可以參考[文件說明](https://mongoosejs.com/docs/guide.html#options)查看可調整的 options

#### versionKey

新增 document 時，預設都會在 document 中加上 `__v: 0`，若不需要加上此設定的話，可以設定 `versionKey: false` 將 versionKey 移除
```javascript
new mongoose.Schema({..}, { versionKey: false });
```
#### collection
Mongoose 預設會將 model 連接的 collection 的名稱轉為全小寫，並以複數呈現，例如
```javascript
const User = mongoose.model('User', userSchema);
```
`'User'` 會被視為 **users**，若是需要不同的 collection 名稱，可以透過 `{ collection: '...' })` 更改

```javascript
new mongoose.Schema({..}, { collection: 'data' });
```
上方設定會將 collection 名稱改為 `data`，若是 `mongoose.model('Test', Schema);` 設定不同的 collection 名稱，仍然會以 `{ collection: 'data' }` 為主


#### timestamps

可以透過 `{ timestamps: true }` 為每筆新增的 document 加上 `createdAt` 和 `updatedAt` 欄位
也可以透過 `{ timestamps: { createdAt: 'created_at' }, { updatedAt: 'updated_at' } }` 自定義 `createdAt` 和 `updatedAt` 欄位

因設定 timestamps 預設會同時加入 `createdAt` 和 `updatedAt`，若只想加入其中一個欄位，則可以將欄位加在 Schema 中
```javascript
new mongoose.Schema({
 ...
 createdAt: {
  type: Date, 
  default: Date.now
 }
});
```
若不希望在前端顯示資料建立時間也可以加入 `select: false` 設定
```javascript
new mongoose.Schema({
 ...
 createdAt: {
  type: Date, 
  default: Date.now,
  select: false
 }
});
```

### 參考資源

[Mongoose v6.2.10: Schemas](https://mongoosejs.com/docs/guide.html#options)
[Mongoose v6.2.10: SchemaTypes](https://mongoosejs.com/docs/schematypes.html)

[移除欄位 __v 方法](https://courses.hexschool.com/courses/1670869/lectures/39252177) 到 [另一種新增方法 create()](https://courses.hexschool.com/courses/1670869/lectures/39252180)（章節影片）

### 題目（將答案寫在 HackMD 並提交至回報區）

延續 Day6 的每日任務，調整手搖飲的 Schema 
- 加入 createdAt 欄位，並設定為隱藏欄位（不會顯示於前端）
- 隱藏 versionKey 欄位

提交範例
```
const drinkSchema = new mongoose.Schema({  
 /* 填入 Schema 內容 */

},{
 /* 填入 options 內容 */
});
```

回報流程
---
請同學依照下圖教學觀看解答、回報答案:

![](https://i.imgur.com/QtL8zEW.png)

回報格式：請在「回報區」貼上連結回報答案 (為了統計人數，請同學依序加上「報數」)

<!-- 解答
```javascript
const drinkSchema = new mongoose.Schema({  
  product: {
    type: String,
    required: [true, '產品名稱未填寫']
  },
  price: {
    type: Number,
    required: [true, '價錢未填寫'] 
  },
  ice: {
    type: String,
    default: "正常冰"
  },
  sugar: {
    type: String,
    default: "全糖"
  },
  toppings: [{type: String}],
  /* 加入 createdAt */
  createdAt: {
    type: Date, 
    default: Date.now,
    select: false
  }
 },{
  versionKey: false
});
```

-->

回報區
---

| 報數 | 組別 / 名字           | codepen / hackMD / 其他回饋                                                  |
| ---- | --------------------- | ---------------------------------------------------------------------------- |
| 1    | 第 6 組 / Wendy       | [HackMD](https://hackmd.io/@0k_MSPdgRPujozP6w_D-bA/B1ZJsYoEq)                |
| 2    | 第 4 組 / sihle       | [HackMD](https://hackmd.io/@bugbug777/SJffjFo45)                             |
| 3    | 第 2 組 / Vic         | [HackMD](https://hackmd.io/Szs2j01CQjKJVtAed7Cd1Q)                           |
| 4    | 第 2 組 / Jin         | [HackMD](https://hackmd.io/Fg7COovjRXqVwAw0J6GkTA)                           |
| 5    | 第 3 組 / HedgehogKU  | [HackMD](https://hackmd.io/4Cw6ndSiTNK5Os3s9Yr_vQ)                           |
| 6    | 第 4 組 / 小宥        | [HackMD](https://hackmd.io/abrwcGYESLG4UCw9GlVCsg)                           |
| 7    | 第 3 組 / Justin      | [HackMD](https://hackmd.io/q_HKcyS1RiuyNtH9SISIYw)                           |
| 8    | 第 7 組 / 程翔        | [HackMD](https://hackmd.io/XeTHTzBWSUux6oX51qlNEA)                           |
| 9    | 第 2 組 / Genos       | [HackMD](https://hackmd.io/5A8AcAMeSSOA96WvjFH48g)                           |
| 10   | Naiky                 | [HackMD @Naiky](https://hackmd.io/@UWBC7rrORiKaLSBg226mZg/S1pbO5o4q)         |
| 11   | 第 8 組 / Hank        | [HackMD](https://hackmd.io/@TFOivyvXT-qpG6SieUTfgw/ry2Lp9iV9)                |
| 12   | 第 3 組 / Adam Hsu    | [HackMD](https://hackmd.io/@S9gD__kVTSiQUupQNn_4FQ/ryKvAqsN5)                |
| 13   | 第 9 組 / 黃士桓      | [HackMD](https://hackmd.io/P04X8iopRF2FW9wZTiUphw)                           |
| 14   | 第 6 組 / Ruta        | [HackMD](https://hackmd.io/6d8HKXBqT36oLMcL0_VS5w)                           |
| 15   | 第 3 組 /  hiYifang   | [HackMD](https://hackmd.io/@gPeowpvtQX2Om6AmD-s3xw/HyTyStcV5)                |
| 16   | 第 8 組 /  JackLee    | [HackMD](https://hackmd.io/TH1TXAwfRLCfWoN_SVA1GA?view)                      |
| 17   | 第 5 組 / Nap         | [HackMD](https://hackmd.io/@8x8YzkXNSzafUSO3LZTmUw/S11Gc3sV5)                |
| 18   | 第 11 組 / Han Lai    | [codepen](https://codepen.io/x94han/pen/BaJvEMj)                             |
| 19   | 第 1 組 / Claire      | [HackMD](https://hackmd.io/GAiFiggiQW63MS0ElSzODA)                           |
| 20   | 第 14 組｜East        | [HackMD](https://hackmd.io/m4hDAxvSTeCMVtN2KRrBCA)                           |
| 21   | 第 12 組｜Jimmy       | [HackMD](https://hackmd.io/cNxDZAsgS5KRidAEVsItDQ)                           |
| 22   | 第 2 組｜peter        | [HackMD](https://hackmd.io/@peterchen1024/ByMcwAs4c)                         |
| 23   | 第 5 組｜Hazel        | [HackMD@Hazel](https://hackmd.io/@hazelwu/day8)                              |
| 24   | 第 8 組｜Jordan Tseng | [HackMD](https://hackmd.io/1n-X32JjQLWdFjmGLOwjGg?view)                      |
| 25   | 第 2 組｜Joe Chang    | [HackMD](https://hackmd.io/uaRTw9c0TgOrADyXMmGL0Q?view#419---Schema-Options) |
| 26   | 第14組/uniza          | [Codepen](https://codepen.io/unizalin/pen/RwxvbPN)                           |
| 27   | 第 3 組 / Larry       | [HackMD](https://hackmd.io/fFUKsg_dSOe9kW2Q_HaFLw)                           |
| 28   | 第 4 組 / 苡安        | [HackMD](https://hackmd.io/lrsabDC9QiOF4ztjyFwf4A)                           |
| 29   |第 9 組 / konstante   |[HackMD](https://hackmd.io/KPbDlSQgQI2Gq61nkkW8Ew)                                                                              |
| 30   |第 3 組 / Hobby   |[HackMD](https://hackmd.io/@hobbyling/nodejs/%2FGq3LzULXQR22MtDzhHou7w) |
| 31 | 第 15 組 / Tofu | [Codepen](https://codepen.io/Tofutseng/pen/GRyzpPB)
| 32   |第 6 組 / 馨云   |[HackMD](https://hackmd.io/Stdo9pj_Qc2ebBap6wFD3g) |
| 33   |第 1 組 / Jerry Huang   |[Codepen](https://codepen.io/sun31483/pen/XWVOKLN?editors=0010) |
| 34 | 第 9 組 / Reynold | [Codepen](https://hackmd.io/@dL7AuQEMQ6KpCSRHaYElOA/Hk45_-s4c)
| 35 | 第11 組 / MANDY | [HackMD](https://hackmd.io/flqKd0qoRCK6J01Yfwt3XQ)
| 36 | 第 8 組 / Albert | [HackMD](https://hackmd.io/@Albertnotes/BkhKKxTEc)
| 37 | 第 3 組 / 小葉 | [HackMD](https://hackmd.io/@FyKv37KcRSWqAO_e336w8g/HyKK7MT4q)
| 38 | 第 2 組 / wendy.li | [HackMD](https://hackmd.io/sf48YeLpRTKfe4NmL5KCKg)
| 39 | 第13組 / KFC |[HackMD](https://hackmd.io/G9V3mm0SRPmW4oVILHLv_g)
| 40 | 第 15 組 / CHIU |[Codepen](https://codepen.io/awdx8326/pen/oNpVjxb?editors=1010)
| 41 | 第 2 組 / Rikkubook |[HackMD](https://hackmd.io/BdBIh1XmTfaIH6JwJ5u5-Q?both)
| 42 | 第 1 組 / snow |[HackMD](https://hackmd.io/@snowsuika/BJ7_e60Vq)
| 43 | 第 1 組 / Ed Haung |[HackMD](https://hackmd.io/1s5Pm57sQK6NhGaUyXRXrA?view)
| 44 | 第 15 組 / yolala |[HackMD](https://hackmd.io/RTCoax-iT-WVRo7lKWp80g?both)
| 45 | nick6303 | [HackMD](https://hackmd.io/Alp5sfhuTomRwfh0cFwZzg)
| 46 | 第 7 組 / jason06286 |[HackMD](https://hackmd.io/to0m6_ybTJmfIc7cUpe-sA)
| 47 | 第 10 組 / 橘子 |[HackMD](https://hackmd.io/4Vq5GsODR62Z8X1YJQfsyg)
| 48 | 第 5 組 / AmberCYT |[HackMD](https://hackmd.io/@amber871023/HkzRYKzB5/%2FxVdWk6-SR2eMJetRmmwSrg)
| 49 | 第 16 組 / 皓皓 |[HackMD](https://hackmd.io/@cutecat8110/HyTluKQrq)
| 50 | 第 1 組 / Phoebe |[HackMD](https://hackmd.io/@Phoebe26/HyFSD9mSq)
| 51 | 第 10 組 / Otis |[Codepen](https://codepen.io/humming74/pen/rNpEdNG?editors=0010)
| 52 | 第 7 組 / TracyChien |[HackMD](https://hackmd.io/@TracyChien/S1sdHEFB9)
| 53 | 第 8 組 / Emily Hsi |[Codepen](https://codepen.io/EmilyHsi/pen/zYRYXzj)
| 54 | 第 10 組 / Butters |[HackMD](https://hackmd.io/ULH3P-pwTTKq6CSESsr7zw?view)
| 55 | 第 14 組 / 皮皮 |[HackMD](https://hackmd.io/PPhUczPOQKOfGByVr_57hQ)