Attach a new virtual field after save using mongoose

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;

…I wish my person object with a third virtual field called ‘fullName’ like this:

// result = {
//   firstName: 'Rick',
//   lastName: 'Biruel',
//   fullName: 'Rick Biruel'
// };

To achieve this result, I tried this to no avail….'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!


Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You can achieve this using VirtualType, and you can also find an example that is very similar to your problem in Mongoose official documentation.

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x