关于mongoose的ObjectId设置问题
发布于 2年前 作者 zstar 1627 次浏览

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 回复

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

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

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

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

回到顶部