【问题标题】:Mongoose collection naming bug?Mongoose 集合命名错误?
【发布时间】:2014-09-21 11:58:20
【问题描述】:

我在 mongoose 3.8.12 中发现了这种(我认为?)不良行为,当您默认创建一个新的 mongoose 模型时,它会使其名称复数添加一个“s”,这是完全正常的,当模型的名称已经以's' 然后按原样保存(预期行为)。问题是当你有两个不同的模型名称相同但一个复数和另一个单数时,mongoose 允许你两个创建两个但在 mongo 中使用相同的集合来存储两者。

假设我有一个名为“汽车”的集合:

mongoose.model('Car', schema);

还有一个“汽车”系列:

mongoose.model('Cars', schema);

两者都作为“汽车”保存在 mongo 中

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

【问题讨论】:

  • 我会说这是预期的结果。有两个使用相同底层集合的 Mongoose 模型是可以的。有点像在同一个 SQL 表上有多个视图。

标签: node.js mongodb mongoose


【解决方案1】:

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

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

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

当然,您可以随时在项目的GitHub repo 上创建新问题。

【讨论】:

    猜你喜欢
    • 2020-11-11
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2014-09-22
    • 2019-08-23
    • 2013-07-22
    • 2018-06-20
    相关资源
    最近更新 更多