mongoose铸错误_id

我想保存一个新用户并添加一些组作为参考。 该组从数据库加载。

var userSchema = new Schema({ email: {type: String, 'default': '', index: {unique: true, dropDups: true}}, password: String, accessToken: String, registerDate: { type: Date, 'default': Date.now}, groups: [{type: ObjectId, ref:'Group'}] }); var groupSchema = new Schema({ name: {type: String, 'default': '', index: {unique: true, dropDups: true}} }); exports.register = function(req, res, next){ var userToRegister = req.body; var newUser = new User(); Group.find({name:"User"}, function(err, group){ if(err){ res.send("no User-group found"); } newUser.set('groups', [group]); newUser.set('email', userToRegister.email); newUser.set('password', userToRegister.password); newUser.save(function(err){ if(err){ res.end("error at saving user", 500); } res.end(JSON.stringify(newUser)); }); }); }; 

但是我得到以下错误:

 message "Cast to ObjectId failed for value "{ _id: 52f6b49e13bdfa901b5a64d3, __v: 0, name... (length: 108)" name "CastError" path "groups" stack undefined type "ObjectId" 

正如我所看到的,这是一个有效的ObjectId。 那么哪里可能是错误?


解:

使用:Group.findOne(…)或:newUser.set('groups',[group [0]]);

.find返回数组。 使用组[0]或使用findOne()。

newUser.set('groups', [group[0]]);