owned this note
owned this note
Published
Linked with GitHub
# 第二週小組任務 [題目](https://hackmd.io/wihIiZSdTye2fhH7pFmr4A?view)
### 任務分配
1. [後端 GitHub repo 連結](https://github.com/gmwu185/MetaWall_backend)
2. [前端 GitHub repo 連結](https://github.com/jason06286/week2TeamWork-node)
3. [加入貼文頁 連結](https://jason06286.github.io/week2TeamWork-node/addPost.html)
4. [貼文頁 連結](https://jason06286.github.io/week2TeamWork-node/post.html)
| 編號 | 工作 | 人數 | 完成時間 | 組員 | 進度 |
| --- | --- | --- | --- | --- | --- |
| 1 | 後端api規格 | 1 名 | 04/25 | JimmyWu| POST/GET (含驗証) |
| 2 | 開發後端 API (後端repo)| 1 名 | 04/25 | JimmyWu | Heroku link DB 設定 |
| 3 | 前端 GitHub repo 管控 由組員審核 | 1 名 |暫無限時 | jason06286 | 完成 |
| 4 | 前端功能一:取得貼文列表 API | 1 名 | | jason06286 | 完成 |
| 5 | 前端功能二:新增貼文 API | 1 名 | | jason06286 | 完成 |
| 6 | 前端切版:切板 | 1 名 | 週二 21:00 前 | jason06286 | 完成 |
### 後端規格表
#### 環境與設定
- 設定 .env 檔案
- 取用 GitHub Repos 專案資料夾中的 postman_export 本地與遠端主機進行操作 API
- npm 與 node 開發環境
- 走 `npm run dev` 環境,主要使用本機端 mongoDB 資料庫,有針對指寫下 node 環境變數,window 系統無法視別變數透過插件已修正。
- `npm start` 遠端主機部署使用,會與 mongoDB 遠端資料庫。
- API 路由路徑
- 本機 (http://localhost:3005/posts)
- Heroku (https://stormy-plateau-16452.herokuapp.com/posts)
#### 工具
- postman 往前 [GitHub Ropse tools/postman_export](https://github.com/gmwu185/MetaWall_backend/tree/main/tools/postman_export) 資料夾取用,分本地端與遠端主機使用。
### 開發後端 API
#### GET API
::: spoiler
#### 網址參數用法:
- 參數名 timeSort 是否有 asc 值,有值有舊到新;沒值有新到舊
- 參數名 q 使用正則表達式以 JS new RegExp(<網址參數>) 轉 mongDB 語法 .find( parName: /<查尋字串>/),以物件包裝查找留言。
#### 收到資料格式
```` JSON
{
"status": "success",
"data": [
{
"_id": "",
"userName": "",
"userPhoto": "",
"discussContent": "",
"discussPhoto": ",
"createAt": ""
},{},{}...
]
}
````
:::
#### POST API
POST API 操作 DB (CollectionName)
Posts -> mongoose -> posts
- 正確新增資料
::: spoiler request body 格式
``` JSON
{
"userName": "string",
// 貼文者姓名,必填
"userPhoto": "string",
// 貼文者圖片
"discussContent": "string",
// 貼文,必填
"discussPhoto": "string"
// 貼圖
}
```
:::
::: spoiler response
``` JSON
{
"status": "success",
"data": {
"userName": "字串",
"userPhoto": "網址圖片路徑",
"discussContent": "字串內容",
"discussPhoto": "網址圖片路徑",
"createAt": "建立時間 UCT+0",
"_id": "隨機亂數"
}
}
```
:::
- mongoose 必填格式錯誤
::: spoiler request body 格式 ( `"userName"` 刻意少帶)
``` JSON
{
"userPhoto": "string",
"discussContent": "string",
"discussPhoto": "string"
}
```
:::
::: spoiler response
``` JSON
{
"status": "false",
"error": {
"errors": {
"userName": {
"name": "ValidatorError",
"message": "名稱必填",
"properties": {
"message": "名稱必填",
"type": "required",
"path": "userName"
},
"kind": "required",
"path": "userName"
}
},
"_message": "Post validation failed",
"name": "ValidationError",
"message": "Post validation failed: userName: 名稱必填"
}
}
```
:::
- Body 解析錯誤
::: spoiler request body 格式 ( 刻意物件少後方大括號 )
``` JSON
{
```
:::
::: spoiler response
``` JSON
{
"status": "false",
"error": "資料格式解析錯誤"
}
```
:::
#### DELETE API (清空資料庫)
送出 req 後資料庫全清,回應空陣列 `[]`
::: spoiler response
```` JSON
{
"status": "success",
"data": []
}
````
:::
### 前端功能一:取得貼文列表 API
### 前端功能二:新增貼文 API
### 小組協作紀錄 & 截圖
::: spoiler 2022/04/16
開會討論分工
8點30至8點50 使用DC語音頻道進行直播
與會人員 詩諾 JimmyWu jason06286 Yof
:::