在学习Mongoose时碰到了写入数据后查询始终为空的问题。
先看代码:

创建了一个PhotoSchema

以创建的PhotoSchema创建了一个名为"photo"的model

响应前端请求时,创建一条测试数据
开启mongdb和服务器:

发送一次post请求后

有写入数据的返回,证明成功写入了数据库
但此时在前端通过express查询还是后端mongo直接查询都无法找到刚刚写入的数据

后台直接查询photo这个集合,里面是没有数据的
但此时在后台查看local(我使用的数据库)下的集合,发现并没有之前按model创建的"photo"集合,而出现的是"photos"集合???

并没有预期的"photo"collection
查询后得知mongoose.prototype.model()会给所有未指定collection名字的model末尾增加一个s,所有按model中"name"创建的collection都会实际映射到"names"的collection中。果然在photos中找到了之前插入的数据:(你给我变复数经过我同意了么???)

之前插入的数据
到此问题已经查明,解决方法有两个 :
第一种:
在创建model的时候自己就添加上"s"

自己加上s
第二种:
在创建schema处为collection指定一个name:

再次请求就可以在"photo"这个集合中查到数据了,同理前端查询也就可以得到数据了

在正确的表中查到了数据
—————————————————————————————————————————————————————
Mongoose那么聪明咋不上天呢???