2014-03-05 153 views
1

我想保存一个新用户并添加一些组作为参考。 该组从数据库加载。猫鼬铸造错误_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( '基团',[基团[0]]);

回答

1

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

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

+0

当我使用新的用户({...组:[userGroup表示],...});有用? – Laokoon

+0

什么userGroup? –

+0

我从数据库 – Laokoon