CNode

使用mongoose过程中遇到的疑惑(已经解决)

Jjackybing发布于14 年前最后回复10 年前10 回复25846 浏览0 收藏

在运行node_club项目过程中,一直很好奇新注册的用户是如何插入mongodb数据库中的。查看源码发现原来是通过mongoose来与mongodb进行操作的。而mongoose是通过model来创建mongodb中对应的collection的,这样你通过如下的代码:

mongoose.model('User', UserSchema);

在相应的数据库中创建一个collection时,第一反应肯定会推断在对应的数据库中会建立一个‘User'的collection,但是事实却与推断完全不一样,这也是一直困扰我两的问题,我通过在mongodb的命令行中试图去寻找我刚新建的collection,代码如下:

use node_club show collections //只能看到有一个名为users的collection,而没有User的collection

由此我们可以推断mongoose在内部创建collection时将我们传递的collection名小写化,同时如果小写化的名称后面没有字母——s,则会在其后面添加一s,针对我们刚建的collection,则会命名为:users。 希望这能给打算研究node_club项目的同学们带来点帮助!

查看回复

回复 (10)

Y
yang0511hui#1·11 年前

正在找这个问题,领教了

Z
zeroone001#2·10 年前

正在学mongoose,也是遇到了这样的疑问,原来是小写化and尾部追加s

R
rianran1993#3·10 年前

科学

R
rianran1993#4·10 年前

但不是都加s,如果是fish等不可数名词,那么就不会加s

D
dreamhuan#5·10 年前

“由此我们可以推断mongoose在内部创建collection时将我们传递的collection名小写化,同时如果小写化的名称后面没有字母——s,则会在其后面添加一s,针对我们刚建的collection,则会命名为:users。”

应该说是小写然后变成复数,如楼上。

L
lzhypt#6·14 年前
user.js  mongoose.model('User',User);
index.js   var mongoose=require('mongoose');
                var Uesr = mongoose.model('User');

为什么我模仿开发指南的那本书弄得会出现

 throw new Error('Schema hasn\'t been registered for model "' + name + '"
            ^
Error: Schema hasn't been registered for model "User".
Use mongoose.model(name, schema)
D
dotlife#7·14 年前

可以通过下面两种方式更改collection的名字: 1.xxschema = new Schema({ ... }, {collection: "your collection name"});

2.mongoose.model('User', UserSchema, "your collection name");

M
monday41#10·14 年前

搞了半天,难怪我查mongodb没结果,谢啦!!

参与回复
登录后即可参与回复。登录