今天用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,专门做大小写,复数等转换的
@i5ting 多谢解答 不过我貌似没引入这个模块啊 他是自动转换了吗就
“Vedio”自动转小写,加s,也就是会创建vedios的collection,记住一句话,mongoose的一切都是基于model,可以参考我的一篇帖子,https://cnodejs.org/topic/569f1ca5729116c06d5c9835
@a1511870876 #多谢#
@dolare 兄弟,多看官方文档,你这个问题,在官方文档写的很清楚
@a1511870876 好的 好的
Mongoose在创建Collection的时候会将你的model名字转换成英语复数形式来命名,但并不是末尾加s那么简单,我还真的有一段时间闲得蛋疼去看了看Mongoose的源代码, https://github.com/Automattic/mongoose/blob/master/lib/utils.js 如何将英文单词转换成复数,感觉挺有意思的。 你若想自定义Collection的名字可以看这个 http://mongoosejs.com/docs/guide.html#collection 都是官方文档里的东西,好好看看吧,争取以后能问个官方文档里找不到的问题。
var 用户 = mongoose.model(“用户”,用户概要); 生成出来的collection竟然叫“用户们” 好神奇
@libook 厉害,学习了。。
@libook 好的 居然连不可数名词都考虑进去了…
我记得有个参数可以控制不加s的 自豪地采用 CNodeJS ionic
你再加第三个参数,就是你想要的collection名 var Vedio = mongoose.model(“Vedio”,VedioSchema,“Vedio”); 其实你想指定成任意的名字都行,例如 var Vedio = mongoose.model(“Vedio”,VedioSchema,“XyZ”);
mark