Mongoose Query.prototype.toConstructor()方法
Mongoose Query API.prototype.toConstructor() 方法 是用于查询对象的 Mongoose API 中的方法。它允许我们自定义查询构造函数。使用这个方法,我们可以创建具有所有配置属性和选项的可重复使用的构造函数。让我们使用一个示例来理解 toConstructor() 方法。
语法:
query.toConstrutor();
参数: 此方法不接受任何参数。
返回值: 此方法返回Query的子类。通过其引用,我们可以访问回调函数。
设置Node.js的Mongoose模块:
步骤1: 使用以下命令创建一个Node.js应用程序:
npm init
步骤2: 创建NodeJS应用程序后,使用以下命令安装所需模块:
npm install mongoose
项目结构:
项目的结构看起来会像这样:
数据库结构: 数据库结构将如下所示,集合中存在以下文档。
示例1: 下面的示例演示了使用异步函数的mongoose查询toConstructor()方法的基本功能。
文件名:app.js
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
const URI = "mongodb://localhost:27017/geeksforgeeks"
const connectionObject = mongoose.createConnection(URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const studentSchema = new mongoose.Schema({
name: { type: String },
age: { type: Number },
rollNumber: { type: Number },
});
const Student = connectionObject.model(
'Student', studentSchema
);
(async () => {
const query = Student.find({ name: 'Student1' });
const Student1 = query.toConstructor();
Student1().exec((error, result) => {
if (error) {
console.log('Error -', error);
} else {
console.log('Result -', result);
}
})
})();
运行程序的步骤:
要运行该应用程序,请从项目的根目录执行以下命令:
node app.js
输出:
Result - [
{
_id: new ObjectId("63a40a1065e8951038a391b1"),
name: 'Student1',
age: 30,
rollNumber: 9,
__v: 0
}
]
示例2: 下面的示例演示了Mongoose查询toConstructor()方法的基本功能,使用回调函数。
文件名:app.js
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
const URI = "mongodb://localhost:27017/geeksforgeeks"
const connectionObject = mongoose.createConnection(URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const studentSchema = new mongoose.Schema({
name: { type: String },
age: { type: Number },
rollNumber: { type: Number },
});
const Student = connectionObject.model(
'Student', studentSchema
);
const query = Student.findByIdAndUpdate(
{ id: '63a4a9a207370cdcd1961b2c' },
{ name: 'Student2' }
);
const Student2 = query.toConstructor();
Student2().then(result => {
console.log('Result -', result);
}).catch(error => { console.log(error) });
运行程序的步骤: 从项目的根目录执行下面的命令来运行应用程序:
node app.js
输出:
使用Robo3T GUI工具对数据库进行GUI表示:
参考文献: https://mongoosejs.com/docs/api/query.html#query_Query-toConstructor