This is my schema...
const personSchema = new Schema({
firstName: String,
lastName: String
});
This is my model...
const PersonModel = model('Persons', personSchema, 'persons');
This is my person object
const person = new PersonModel({
firstName: 'Rick',
lastName: 'Biruel'
});
When I save my object...
const result = await person.save();
...I wish my person object with a third virtual field called 'fullName' like this:
console.warn('result');
// result = {
// firstName: 'Rick',
// lastName: 'Biruel',
// fullName: 'Rick Biruel'
// };
To achieve this result, I tried this to no avail....
personSchema.post('save', async function () {
this.fullName = `${this.firstName} ${this.lastName}`;
});
P.S. No error occurs, but the third field 'fullName' doesn't exist in my person object. The fullName
field must not persist on database!
You can achieve this using VirtualType, and you can also find an example that is very similar to your problem in Mongoose official documentation.