hello i am learning mongodb.I get to know about discriminator in mongoose.I tried to understand it from document side but didn't understand well.Can anyone explain in better way?? thanks
Let take an example your project have two role one is business user second is normal user. sure business user should have some extra fields like opening time, charges, occupancy etc. and you won't like to those in normal user document. then you can create a seperate model "Business" extending your User" model by a seperation key "userType" and all business logics are fired on it.
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var userSchema = new Schema({
name: {
type: String,
required: true,
message: 'Name is required',
},
},{
timestamps: {
createdAt: 'created',
updatedAt: 'updated'
},
discriminatorKey: 'userType',
id: false,
toJSON: {
getters: true,
virtuals: true
},
toObject: {
getters: true,
virtuals: true
}
});
var businessSchema= new Schema({
charges: {
type: Number,
default: 20
},
})
module.exports = mongoose.model('User', userSchema)
module.exports = User.discriminator('Business',businessSchema );
// in business logic/ controller try and debug results
var mongoose = require('mongoose');
const User = mongoose.model("User");
const Business = mongoose.model("Business");
User.findOne({}, (err, user)=>{
console.log(err, user);
})
Business.findOne({}, (err, biz)=>{
console.log(err, biz);
})
Notice biz have all properities of user + some extra fields. It's easy to understand while implementing logics too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With