How To Create Mongoose Schema with Array of Object IDs? How To Create Mongoose Schema with Array of Object IDs? express express

How To Create Mongoose Schema with Array of Object IDs?


If you want to use Mongoose populate feature, you should do:

var userSchema = mongoose.Schema({  email: { type: String, required: true, unique: true},  password: { type: String, required: true},  name: {      first: { type: String, required: true, trim: true},      last: { type: String, required: true, trim: true}  },  phone: Number,  lists: [listSchema],  friends: [{ type : ObjectId, ref: 'User' }],  accessToken: { type: String } // Used for Remember Me});exports.User = mongoose.model('User', userSchema);

This way you can do this query:

var User = schemas.User;User .find() .populate('friends') .exec(...)

You'll see that each User will have an array of Users (this user's friends).

And the correct way to insert is like Gabor said:

user.friends.push(newFriend._id);


I'm new to Mongoose myself, so I'm not entirely sure this is right. However, you appear to have written:

friends: [mongoose.Types.ObjectId],

I believe the property you're looking for is actually found here:

friends: [mongoose.Schema.Types.ObjectId],

It may be that the docs have changed since you posted this question though. Apologies if that's the case. Please see the Mongoose SchemaTypes docs for more info and examples.


I would try this.

user.friends.push(newFriend._id);

or

friends: [userSchema],

but i'm not sure if this is correct.