Home > database >  Attach a new virtual field after save using mongoose
Attach a new virtual field after save using mongoose

Time:03-08

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!

CodePudding user response:

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

  • Related