Mongoose Query prototype.transform()函数
Mongoose是一个用于node.js环境下的MongoDB对象建模和处理库。Mongoose Query transform() 方法用于转换从Mongoose查询响应中返回的文档。当我们需要向加载的文档中添加新属性时,这种转换可以很有用。让我们通过一些示例更了解它。
语法:
Query.prototype.transform()
参数:
它接受一个参数:如下所述:
- fn: 这是一个运行转换查询结果的函数
返回类型:
它返回一个Query对象。
创建节点应用程序并安装Mongoose:
步骤1:
使用以下命令创建一个节点应用程序:
mkdir folder_name
cd folder_name
npm init -y
touch main.js
步骤2: 创建ReactJS应用程序后,使用以下命令安装所需模块:
npm install mongoose
项目结构: 它将如下所示。
在MongoDB Compass中的数据库的图形用户界面表示: 目前,该集合没有数据。
示例1: 在这个示例中,我们将使用Query API中的transform()方法将当前日期设置为返回的文档的值。
文件名:main.js
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'));
const personSchema = new mongoose.Schema({
name: {
type: String,
},
age: {
type: Number,
}
});
const personsArray = [
{
name: 'John',
age: 22
}
]
const Person = mongoose.model('Person', personSchema);
(async () => {
await Person.insertMany(personsArray);
const persons = await Person.find().transform(per => {
return {
...per,
currentDate: new Date()
}
})
console.log(persons);
})()
运行应用程序的步骤: 从项目的根目录使用以下命令运行应用程序:
node main.js
输出: 我们可以看到结果值保持不变。
在MongoDB Compass中使用的数据库的GUI表示:
示例2: 在这个示例中,我们将使用Query API的transform()方法来设置返回的文档数量。
文件名:main.js
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'));
const personSchema = new mongoose.Schema({
name: {
type: String,
},
age: {
type: Number,
}
});
const personsArray = [
{
name: 'John',
age: 22
}
]
const Person = mongoose.model('Person', personSchema);
(async () => {
await Person.insertMany(personsArray);
const persons = await Person.find().transform(per => {
return {
...per,
count: per.length
}
})
console.log(persons);
})()
运行应用程序的步骤: 从项目的根目录中使用以下命令运行应用程序:
node main.js
输出: 我们看到结果中的值保持不变。
GUI表示数据库使用MongoDB Compass:
参考: https://mongoosejs.com/docs/api/query.html#query_Query-transform