猫鼬收集命名错误?

时间:2014-07-29 23:48:39

标签: node.js mongodb mongoose

我在mongoose 3.8.12中发现了这个(我认为?)不良行为,当你默认创建一个新的猫鼬模型时,它会使其名称复数添加一个's',这是完全正常的,当模型的名称已经结束时一个's'然后保存它(预期的行为)。问题是当你有两个不同的模型,它们具有相同的名称,但是一个复数而另一个是单数,那么mongoose允许你创建两个但在mongo中使用相同的集合来存储它们。

假设我有一个名为'car'的集合:

mongoose.model('Car', schema);

和'汽车'系列:

mongoose.model('Cars', schema);

两者都作为'cars'保存在mongo中

我认为这不是预期的行为。

1 个答案:

答案 0 :(得分:1)

http://mongoosejs.com/docs/api.html#index_Mongoose-model

  

当没有传递集合参数时,Mongoose通过将模型名称传递给utils.toCollectionName方法来生成集合名称。该方法使名称复数化。如果您不喜欢此行为,请传递集合名称或设置模式集合名称选项。

由于Car变为CarsCars已经是复数,因此您最终会使用相同的集合名称。模型通常被赋予单数名称。上面的链接列出了几种设置自定义集合名称的方法。

当然,您始终可以在项目GitHub repo上创建新问题。