一、状况;缘起
在整个学期总共遇到两三次发生大BUG解到天亮的情况,以下一一叙述......
情况一:在 A1 作业打造餐厅清单,缴交的栏位必须上传 github 网址,然而我一直无法把本地端的东西推上 github情况二:在 week2 使用 mongoDB 和 mongoose 的时候连接也遇到大问题,那阵子最害怕看到这个 error:MongooseError: The `uri` parameter to `openUri()` must be a string......
甚至还去察看了node_module
情况三:在 A7 作业中,路由器疯狂出错,读不到 new.handlebars 页面,终端机回传:MongooseError [CastError]: Cast to ObjectId failed for value "new" at path "_id" for model "Restaurant".....
二、第一次出手与失败
情况一:后来才发现问题出在我之前有一次懒得重新推,所以直接在github上做修改,结果就造成远端和本地端冲突,然后又不知道按到什么键,整个档案回复到最开始 git commit 的版本,只好摸摸鼻子重新写(此时的我已经对git充满敬畏,不敢再乱做其他操作)情况二:查阅了 stackoverflow 然而完全没用,对着 error 崩溃情况三:一一比对了教案试图釐清问题出在哪,我有哪一点没跟教案一样?但一样未果。三、定义问题
情况一:对 git 太不熟悉了,所以这也是我后来开始写 git 版控流程问题笔记的缘起之一。 git 实在慑人心魄。情况二:绝对是 mongoose 的问题(毕竟报错都自己写了),但此时我也才刚接触 mongoose,就算知道问题在 mongoose,也只能迷失在茫茫文法海中,只能推测是资料库网址问题情况三:觉得是 mongoose 的问题,但「value "new" at path "id"」又让我觉得应该跟 new.handlebars 这个页面有关四、寻找与尝试
三个问题都先找了 google 和 stackoverflow,再来一一跟教案进行相比有哪里不同的地方。
五、掌握关键,拨云见月
情况一:因为我后来直接重新写了,然后也发现如果本地端跟远端版本不同的话一定要先 git pull 把远端的东西抓下来更新!main 主支才不会疯狂冲突!这时我也学乖了,在重新 git 的过程中我用 google sheet 写了流程笔记,避免未来的自己再忘记:Git 版控流程情况二:情况很蠢,反覆比对教案多次之后,我瞇起眼睛,终于发现 mongoDB_URI 最后一个字母好像是「I」(i) 而不是「l」(L) 所以我完全打错,难怪会报错
这次之后也因为资料库的执行过程实在太多小细节,所以也在 git 版控流程的旁边写上建立新专案的步骤,方便自己查阅而且不会忘记。启动新专案流程情况三:这个问题是唯一我卡到没有自己解决了,后来问了助教才知道是路由器摆放顺序问题,只要把 new 页面的router 移到 show 页面的 router 上方就可以了。
六、回顾与发现
我觉得重点在于细心,以及搞清楚变数和路由器传入的顺序和步骤,这些东西在脑中清楚理顺过,代码才不会一直报错。
七、分享与展望
唯一推荐 chatGPT,到后期太多问题是 stackoverflow 无法解决的了,所以后来我都直接问 GPT,如果 GPT 也无法解决才会问助教。
mongoose 的语法官方文件也要看过,很多语法用法写在里面!