Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how mongoose discriminator can be helpful in databases? [closed]

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

like image 923
Andrew Avatar asked Jan 09 '18 09:01

Andrew


Video Answer


1 Answers

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.

like image 116
shivshankar Avatar answered Sep 22 '22 08:09

shivshankar