Open In App

How does Query.prototype.map() works in Mongoose ?

Last Updated : 31 Jul, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

The Query.prototype.map() function is used to run a function fn and treats the return value of fn as the new value for the query to resolve to. All the function which are passed to map() function will be run after any post hooks. 

Syntax:  

Query.prototype.map()

Parameters: This function has one parameter fn which is function to run to transform the query result.
Return Value: This function returns Query Object.

Mongoose Installation:

npm install mongoose

After installing the mongoose module, you can check your mongoose version in command prompt using the command. 

npm mongoose --version

After that, you can just create a folder and add a file for example, index.js as shown below.

Database: The sample database used here is shown below:  

Example 1:

Here, the filename is index.js

Javascript




const mongoose = require('mongoose');
 
// Database connection
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
});
 
// User model
const User = mongoose.model('User', {
    name: { type: String },
    age: { type: Number }
});
 
const query = User.find({name:"Lalit"}).map(res => {
     
  console.log("loadedAt property set on the doc "
       + "to tell the time doc was loaded.")
  return res == null ? res : Object.assign(res,
       { loadedAt: new Date() });
});
 
query.exec(function(err, res){
    if(err) console.log(err)
    else console.log(res)
});


The project structure will look like this: 

Run index.js file using below command: 

node index.js

Output: 

loadedAt property set on the doc to tell the time doc was loaded.
[
  { _id: 5ebc3669a99bde77b2efb9ba, name: 'Lalit', age: 25, __v: 0 },
  loadedAt: 2020-07-14T18:22:57.991Z
]

Example 2:

Here, the filename is index.js

Javascript




const express = require('express');
const mongoose = require('mongoose');
const app = express()
 
// Database connection
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
});
 
// User model
const User = mongoose.model('User', {
    name: { type: String },
    age: { type: Number }
});
 
const query = User.find().map(res => {
     
 console.log("loadedAt property set on the doc "
      + "to tell the time doc was loaded.")
 return res == null ? res : Object.assign(res,
      { loadedAt: new Date() });
 
});
 
query.exec(function(err, res){
    if(err) console.log(err)
    else console.log(res)
});
 
app.listen(3000, function(error ) {
    if(error) console.log(error)
    console.log("Server listening on PORT 3000")
});


The project structure will look like this: 

Run index.js file using below command: 

node index.js

Output: 

Server listening on PORT 3000
Server listening on PORT 3000
loadedAt property set on the doc to tell the time doc was loaded.
[
  { _id: 5ebb9129a99bde77b2efb809, name: 'Gourav', age: 10, __v: 0 },
  { _id: 5ebc3669a99bde77b2efb9ba, name: 'Lalit', age: 25, __v: 0 }, 
  { _id: 5ebc367da99bde77b2efb9bf, name: 'Piyush', age: 5, __v: 0 }, 
  { _id: 5ebd345f5d2d8a3534b2f391, name: 'Manish', age: 34, __v: 0 },
  loadedAt: 2020-07-14T18:24:36.890Z
]

Reference: https://mongoosejs.com/docs/api/query.html#query_Query-map
 



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads