有没有办法阻止MongoDB将复数形式添加到集合名称?

时间:2014-03-13 21:49:33

标签: mongodb mongoose

一切正常,直到我想创建一个名为' Mice'例如。 Mouses和Mices都是不可接受的。如果有一个选项可以在配置中设置它,那将会很好。 评论:感谢您的建议,我使用的是Mongoose。

3 个答案:

答案 0 :(得分:36)

如果您将模型命名为“鼠标”,那么Mongoose实际上会将集合名称正确地复制到' mouse' (见source code)。

但您也可以在创建模型时通过将其作为第三个参数传递给model来明确命名您的集合:

var Mice = mongoose.model('Mice', MouseSchema, 'Mice');

答案 1 :(得分:1)

mongoose.model的API结构是这样的: Mongoose#model(name,[schema],[collection],[skipInit])

mongoose做的是,当没有传递集合参数时,Mongoose通过复制模型名称来生成集合名称。如果您不喜欢此行为,请传递集合名称或设置模式集合名称选项。

实施例

var schema = new Schema({name:String},{collection:' actor'});

//或

schema.set(' collection',' actor');

//或

var collectionName ='演员' var M = mongoose.model(' Actor',schema,collectionName);

有关更多信息,请查看此链接: http://mongoosejs.com/docs/api.html#index_Mongoose-model

答案 2 :(得分:0)

这是代码,如何理解猫鼬如何产生复数形式

function pluralize(str) {
  var found;
  str = str.toLowerCase();
  if (!~uncountables.indexOf(str)) {
    found = rules.filter(function(rule) {
      return str.match(rule[0]);
    });
    if (found[0]) {
      return str.replace(found[0][0], found[0][1]);
    }
  }
  return str;
}

参考链接:https://github.com/vkarpov15/mongoose-legacy-pluralize/blob/master/index.js