CNode

关于mongoose的ObjectId设置问题

Zzstar发布于14 年前最后回复14 年前4 回复19735 浏览0 收藏

mongoose.Schema.Types.ObjectId这个是现在官方API获得ObjectId的方法, mongoose.Schema.ObjectId这个是是原来2012年6月份以前获得ObjectId的方法, 我用下面的schema试了下, var UserScheme = new Schema({ userId:ObjectId, username:String, password:String, userAccountId:ObjectId, userAccountSummary:{type:String,default:"1000"}, myProjectsList:[], myCommentsList:[Comments], myFundedProjectsList:[]

}); 为什么后期数据库总是查不到userId和userAccountId,它被设定为ObjectId啊,数据库应该自动分配给它一个值,但是数据库没有。截图如下。enter image description here

请求解释下

查看回复

回复 (4)

Z
zstar#1·14 年前

mongoose如何自己设置ObjectId,我在官网没查到,知道的请解释下

A
a272121742#2·14 年前
引用 zstarmongoose如何自己设置ObjectId,我在官网没查到,知道的请解释下

哎,这个问题一看就很清晰了。 申明:ObjectId不是指主键,他只是mongodb中的一种主键类型。 因此,你定义的Schema虽然有很多ObjectId类型,但是却没有指定谁是真正的主键。程序无法得知你定义的真正主键是谁,还是会为你默认分配_id作为你的主键,他的类型是ObjectId。程序只会给真正的主键赋值,其他的2个当然不会给值咯。如果你想给他值,就要写set方法,让Schema构造完后写入数据库时自动生成值。

Z
zstar#3·14 年前
引用 zstarmongoose如何自己设置ObjectId,我在官网没查到,知道的请解释下

@a272121742 那么这两个objectid就要自己写set函数了,那就还要自己定义objectid是什么,如果通过写set函数,借助系统来自动分配id多好,不知道行不行,

A
a272121742#4·14 年前
引用 zstarmongoose如何自己设置ObjectId,我在官网没查到,知道的请解释下

@zstar mongoose是允许你使用多个主键的,你可以配置多主键或者联合主键

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