Mongoose索引后的Mongo数据库修复名称?

Mongoose与Node和Mongo数据库交互的方式,我有一个非常奇怪的问题。

我使用express来创build一个基本的get apipath来从我的mongodb中获取一些数据。

我有一个名为testing的数据库,它有一个集合电话“billings”

所以架构和路由是非常基本的

apiRouter.route( '/计费/')

.get(function(req, res) { Billing.find(function(err, billings) { if (err) res.send(err); // return the bills res.json(billings); }); }); 

“帐单”是我的mongoose模式。 只有1个对象{test:string}

这工作得很好,我得到了我所有的项目在我的名为“比林斯”,这是只有一个项目{testing:“成功”}的所有项目的回应

接下来我创build了一个名为“历史”的集合

我设置了与我的帐单完全相同的设置。

apiRouter.route( '/ historys /')

  // get all the history .get(function(req, res) { Historys.find(function(err, historys) { if (err) res.send(err); // return the history res.json(historys); }); }); 

再一次“历史”是我的mongoose模式。 这个模式与我的账单设置是一样的,因为我没有任何真实的数据,字段是相同的,我只是用testing字段,所以从billings和历史回报json对象应该已经

{testing:“成功”}

不过,这一次我没有收到任何数据,我只是得到一个空的对象

[]。

我多次浏览了我的代码,以确保可能有一个资本迷路了,或者逗号等等,但是代码是一样的。 在我的MongoDB中的设置和格式是相同的。 我进入robomongo并查看数据库,一切都正确命名。

除了我现在有两个新的collections。

我原来的:“历史”和一个全新的收集“历史”

一旦我固定我的api路线去看历史,而不是Historys,我能够成功地获得testing数据。 然而,我仍然无法从Historys中提取数据,就像它不存在,但当我刷新的时候它就在我的robomongo控制台中。

我search了我所有的代码,提供历史logging,并得到0结果。 系统知道如何修复我的collections中的语法?

从文档:

当没有收集parameter passing时,Mongoose通过将模型名称传递给utils.toCollectionName方法来生成一个集合名称。 这种方法复数名称。 如果您不喜欢这种行为,请传递集合名称或设置您的模式集合名称选项。

所以,当你在模式定义中这样做的时候:

 mongoose.model('Historys', YourSchema); 

,mongoose创造了Historiescollections。

当你这样做时:

 db.historys.insert({ test: "success" }) 

通过mongodb控制台,如果historys集合不存在,它将被创build。 这就是为什么你的数据库中有两个集合。 就像文档说的那样,如果你不希望mongoose根据你的模型创build一个复数名称的集合,只需指定你想要的名字。