Open In App

Mongoose Schematype.cast() API

Last Updated : 27 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Mongoose is a MongoDB object modeling and handling for a node.js environment. Mongoose.SchemaType.cast() is a method provided by Mongoose, which is used to cast a value to the appropriate type defined by a Mongoose schema. Let’s understand more about this with some examples.

Syntax:

mongoose.datatype.cast( function(){})

Parameters: 

  • datatype: It is the datatype for which type we want to cast the data. 
  • function: It is a function that uses some logic and returns desired datatype. 

Returns type: It returns the anonymous function which is cast to the datatype.

Creating node application And Installing Mongoose:

Step 1: Create a node application using the following command:

mkdir folder_name
cd folder_name
npm init -y
touch main.js

Step 2: After creating the application, Install the required module using the following command:
Advertisement

npm install mongoose

Project Structure: It will look like the following.

output1

Example 1: In this example, we will use the cast function in the mongoose and type cast the age property of person Schema to string. 

Filename: script.js

Javascript




const mongoose = require('mongoose');
let Schema = mongoose.Schema;
 
mongoose.Number.cast(v => {
    if (typeof v === 'number') { return '30' }
})
let personSchema = new Schema({
    name: String,
    age: Number
});
let Person = mongoose.model('Person', personSchema);
 
let person = new Person({
    name: 'John Doe',
    age: 30
});
console.log('Type of Age is : ', typeof person.age);


Step to Run Application: Run the application using the following command from the root directory of the project:

node script.js

Output:

 

Example 2: In this example, we will set the cast function inside the age in the property in the schema and typecast the property to Number.

Filename: script2.js

Javascript




const mongoose = require('mongoose');
const Schema = mongoose.Schema;
 
let personSchema = new mongoose.Schema({
    name: String,
    age: {
        type: Number,
        cast: function castAge(v) {
            if (typeof v === 'number') {
                return v;
            }
            if (typeof v === 'string' && !isNaN(v)) {
                return +v;
            }
            if (v instanceof Date) {
                return Math.floor((Date.now() - v) /
                    (1000 * 60 * 60 * 24 * 365));
            }
        }
    }
});
 
let Person = mongoose.model('Person', personSchema);
 
let person = new Person({
    name: 'John Doe',
    age: new Date('2001/01/30')
});
console.log('Type of Age is : ', typeof person.age);
console.log('Age of Person is :', person.age);


Step to Run Application: Run the application using the following command from the root directory of the project:

node script2.js

Output:

 

Reference: https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-cast



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads