Node.js 带有_id的mongoose强制转换错误

Node.js 带有_id的mongoose强制转换错误,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我想保存一个新用户并添加一些组作为引用。 该组是从数据库加载的 var userSchema = new Schema({ email: {type: String, 'default': '', index: {unique: true, dropDups: true}}, password: String, accessToken: String, registerDate: { type: Date, 'default': Date.now}, gr

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

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]])

当我使用新用户时({…组:[用户组],…});它可以工作吗?我从mongoose中的数据库
ref
加载的组的工作方式与sql表联接类似。将另一个集合的id存储在一个集合中。您需要做的就是存储组id。当我想要设置我得到的id时:在路径“groups”处为值“”强制转换为非\u对象\u属性\u加载失败。但组不是空的。它是:{u id:52f6b49e13bdfa901b5a64d3,{u v:0,name:'User'}可能是因为没有名为“User”
group的组。find({name:'User}
。启动mongo控制台并在那里检查您的查询-
db.group.find({name:'User})