今天用mongoose建了一个mongodb的collection 名字起得是Vedio var VedioSchema = new Schema({ _id: { type: String, unique: true, ‘default’: shortid.generate }, date: { type: Date, default: Date.now }, name: String, link:String, postDate:Date, image:String }); var Vedio = mongoose.model("Vedio",VedioSchema);
但是最终查看mongodb数据库 collection的名字却是vedios 这是为啥啊 向大家讨教了
mongoose.model("Vedio",VedioSchema);
是根据model的第一个参数,小写转的
nodejs里有一个模块叫inflected,专门做大小写,复数等转换的
"Vedio"自动转小写,加s,也就是会创建vedios的collection,记住一句话,mongoose的一切都是基于model,可以参考我的一篇帖子,https://cnodejs.org/topic/569f1ca5729116c06d5c9835
Mongoose在创建Collection的时候会将你的model名字转换成英语复数形式来命名,但并不是末尾加s那么简单,我还真的有一段时间闲得蛋疼去看了看Mongoose的源代码, https://github.com/Automattic/mongoose/blob/master/lib/utils.js 如何将英文单词转换成复数,感觉挺有意思的。 你若想自定义Collection的名字可以看这个 http://mongoosejs.com/docs/guide.html#collection 都是官方文档里的东西,好好看看吧,争取以后能问个官方文档里找不到的问题。
你再加第三个参数,就是你想要的collection名 var Vedio = mongoose.model("Vedio",VedioSchema,"Vedio"); 其实你想指定成任意的名字都行,例如 var Vedio = mongoose.model("Vedio",VedioSchema,"XyZ");