終於來到第30天,今天要有始有終的把實作的編輯功能完成,一樣會以NodeJS的部份為主。
在編輯的功能一樣是透過兩個post()
方法的中介層做請求資料的處理與回傳資料,依據前端傳遞的資料類型使用不同的parser,這裡使透過use()
方法使用Express內建的json()
方法,將請求的資料req.body
解析為JSON格式字串,並建立一個UpdateItem()
方法用以更新資料庫資料。另外建立一個全域變數updateRes作為更新後回傳的訊息,並以JSON格式字串回傳。
var updateRes;
app.use(express.json());
app.post("/api/updateItem", (req, res, next) =>{
updateItem(req.body).then(next);
});
app.post("/api/updateItem", (req, res) =>{
res.end(JSON.stringify({data: updateRes}));
});
接著定義UpdateItem()
函式的內容,以mongoose套件建立資料庫連線,使用replaceOen()
透過前端請求的ID篩選要更新的資料與給定更新的資料內容,並以exec()
執行,完成後指派訊息給全域變數updateRes
。
function updateItem(data){
return new Promise((resolve, reject) => {
mongoose.connect("mongodb://localhost:27017/todoProj")
.then(() => {
itemData.replaceOne({_id: data._id}, {
Title: data.Title,
Note: data.Note,
Date: data.Date,
Tag: data.Tag
}).exec(function(err, item){
if (err!=null) return reject(err);
updateRes = "success";
resolve();
});
}).catch(err => {
console.log(err);
reject(err);
});
});
}
30天的挑戰終於完成,最能表達心情的只有一個字:累,每天8小時的工作加上晚上至少4小時起跳的學習加整理文章不可能不累,但是真的很扎實的學習了技術,每天除了看課程理解內容,有一些快速帶過的內容為了要正確呈現,也參考不少資料,很感謝網路上樂於分享經驗的各路強者工程師,不管遇到什麼問題或是不理解的總是能在網路上找到方向,除了獲得技術之外,也更深深的感到學無止盡...已經開始考慮接著著手學習React,最後幾天React的部份真的有點心虛,接下來會繼續努力的,雖然短時間應該不會再進行這種高強度挑戰,希望依然能維持繼續學習技術的心情,或許明年會再來挑戰一次,也謝謝大家30天來的閱讀。