Laokoon
Laokoon

Reputation: 1291

mongoose cast error with _id

I want to save a new user and add some group as a reference. The group is loaded from database.

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));
        });

    });
};

But I get the following error:

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

As I can see, it is a valid ObjectId. So where could be the error?


Solution:

using: Group.findOne(...) or: newUser.set('groups', [group[0]]);

Upvotes: 1

Views: 1857

Answers (1)

Mukesh Soni
Mukesh Soni

Reputation: 6668

.find returns array. use group[0] or use findOne().

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

Upvotes: 1

Related Questions