Modeling with MongoDB and Mongoose

78 Views Asked by At

I have a simple app which lists tour guides and reviews left by users about each guide. Any user can give be a guide and can give reviews. My scheme for a user is:

var User = new mongoose.Schema({ 
    firstName: { type: String, required: true, unique: true },
    lastName: { type: String, required: true, unique: true },
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true}   
    isGuide: Boolean,
    rating: {type: Number, "default": 0, min: 0, max: 5},
    reviews: [reviewSchema]
});


var Review = new mongoose.Schema({
    userId: {type: Schema.ObjectId, ref: 'User'},
    author: {type: String, required: true},//contatenation of firstName and lastName of user that wrote review
    rating: {type: Number, required: true, min: 0, max: 5},
    reviewText: {type: String, required: true},
    createdOn: {type: Date, "default": Date.now}
});

mongoose.model('User', User);

I want to be able to:

1/ show a guide and all that guide's reviews 2/ show all a user's reviews 3/ show all guides a user has reviewed

I think my schema above is fine for 1. But is it suitable for 2 and 3? Am I understanding the MonboDB philosophy correctly?

0

There are 0 best solutions below