在學(xué)習(xí)Mongoose時碰到了寫入數(shù)據(jù)后查詢始終為空的問題。
先看代碼:
創(chuàng)建了一個PhotoSchema
以創(chuàng)建的PhotoSchema創(chuàng)建了一個名為"photo"的model
響應(yīng)前端請求時铐料,創(chuàng)建一條測試數(shù)據(jù)
開啟mongdb和服務(wù)器:
發(fā)送一次post請求后
有寫入數(shù)據(jù)的返回渐裂,證明成功寫入了數(shù)據(jù)庫
但此時在前端通過express查詢還是后端mongo直接查詢都無法找到剛剛寫入的數(shù)據(jù)
后臺直接查詢photo這個集合豺旬,里面是沒有數(shù)據(jù)的
但此時在后臺查看local(我使用的數(shù)據(jù)庫)下的集合,發(fā)現(xiàn)并沒有之前按model創(chuàng)建的"photo"集合柒凉,而出現(xiàn)的是"photos"集合族阅??膝捞?
并沒有預(yù)期的"photo"collection
查詢后得知mongoose.prototype.model()會給所有未指定collection名字的model末尾增加一個s坦刀,所有按model中"name"創(chuàng)建的collection都會實際映射到"names"的collection中。果然在photos中找到了之前插入的數(shù)據(jù):(你給我變復(fù)數(shù)經(jīng)過我同意了么???)
之前插入的數(shù)據(jù)
到此問題已經(jīng)查明蔬咬,解決方法有兩個 :
第一種:
在創(chuàng)建model的時候自己就添加上"s"
自己加上s
第二種:
在創(chuàng)建schema處為collection指定一個name:
再次請求就可以在"photo"這個集合中查到數(shù)據(jù)了鲤遥,同理前端查詢也就可以得到數(shù)據(jù)了
在正確的表中查到了數(shù)據(jù)
—————————————————————————————————————————————————————
Mongoose那么聰明咋不上天呢?林艘?盖奈?