Mongoose SchemaType.prototype.set() API
The SchemaType.prototype.set() function of the Mongoose API is used to allow us to transform or manipulate data before it gets stored in MongoDB or before a query is executed
Syntax:
SchemaType.prototype.set()
Parameters: It accepts the following parameter as mentioned above and described below:
- fn: It is a function that performs some operation on the data and returns the transformed value.
Return type: It returns the SchemaType object as a response.
Setting up Node.js Mongoose Module:
Step 1: Create a Node.js application using the following command:
npm init
Step 2: After creating the NodeJS application, Install the required module using the following command:
npm install mongoose
The below examples will demonstrate the Mongoose SchemaType.prototype.set() method.
Example 1: In this example, we will create a setter that will allow us to convert a name into uppercase before it gets stored in DB.
Javascript
const mongoose = require( 'mongoose' ) // Database connection mongoose.connect( 'mongodb://localhost:27017/query-helpers' , { dbName: 'event_db' , useNewUrlParser: true , useUnifiedTopology: true }, err => err ? console.log(err) : console.log( 'Connected to database' )); function toUpper(v) { return v.toUpperCase(); } const personSchema = new mongoose.Schema({ name: { type: String, set: toUpper }, age: { type: Number, } }); const personsArray = [ { name: 'Luffy' , age: 19 }, { name: 'Nami' , age: 30 }, { name: 'Zoro' , age: 35 } ] const Person = mongoose.model( 'Person' , personSchema); (async () => { await Person.insertMany(personsArray); const res = await Person.find(); console.log({ res }); })() |
Step to Run Application: Run the application using the following command from the root directory of the project:
node main.js
Output:
GUI Representation of the Database using MongoDB Compass:
Example 2: In this example, we will create a setter that will allow us to convert an age into a number before it gets stored in DB.
Javascript
const mongoose = require( 'mongoose' ) // Database connection mongoose.connect( 'mongodb://localhost:27017/query-helpers' , { dbName: 'event_db' , useNewUrlParser: true , useUnifiedTopology: true }, err => err ? console.log(err) : console.log( 'Connected to database' )); function helper(val) { if ( typeof val === 'string' ) { val = Number(val) } return val; } const personSchema = new mongoose.Schema({ name: { type: String, }, age: { type: Number, set: helper } }); const personsArray = [ { name: 'Luffy' , age: '19' }, { name: 'Nami' , age: '30' }, { name: 'Zoro' , age: '35' } ] const Person = mongoose.model( 'Person' , personSchema); (async () => { await Person.insertMany(personsArray); const res = await Person.find(); console.log({ res }); })() |
Step to Run Application: Run the application using the following command from the root directory of the project:
node main.js
Output:
GUI Representation of the Database using MongoDB Compass:
Reference: https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-set