我在mongoose 3.8.12中发现了这个(我认为?)不良行为,当你默认创建一个新的猫鼬模型时,它会使其名称复数添加一个's',这是完全正常的,当模型的名称已经结束时一个's'然后保存它(预期的行为)。问题是当你有两个不同的模型,它们具有相同的名称,但是一个复数而另一个是单数,那么mongoose允许你创建两个但在mongo中使用相同的集合来存储它们。
假设我有一个名为'car'的集合:
mongoose.model('Car', schema);
和'汽车'系列:
mongoose.model('Cars', schema);
两者都作为'cars'保存在mongo中
我认为这不是预期的行为。
答案 0 :(得分:1)
http://mongoosejs.com/docs/api.html#index_Mongoose-model
当没有传递集合参数时,Mongoose通过将模型名称传递给utils.toCollectionName方法来生成集合名称。该方法使名称复数化。如果您不喜欢此行为,请传递集合名称或设置模式集合名称选项。
由于Car
变为Cars
,Cars
已经是复数,因此您最终会使用相同的集合名称。模型通常被赋予单数名称。上面的链接列出了几种设置自定义集合名称的方法。
当然,您始终可以在项目GitHub repo上创建新问题。