Mongoose Document.prototype.$isDeleted()函数
Mongoose API中的Document.prototype.$isDeleted()方法用于Document模型。 它允许我们识别文档是否被移除。 使用isDeleted()方法,我们可以重写mongoose对文档是否被删除的判断。 让我们使用一个示例来理解isDeleted()方法。
语法:
document.$isDeleted( value );
参数: 此方法接受一个参数,如下所述:
- value: 用于指定布尔值。此值将覆盖Mongoose对于删除任何文档的判断。
返回值: 此方法返回一个布尔值。如果文档被删除,则返回true,否则返回false。
设置Node.js的Mongoose模块:
步骤1: 使用以下命令创建一个Node.js应用程序:
npm init
步骤2: 创建NodeJS应用程序后,使用以下命令安装所需模块:
npm install mongoose
项目结构: 项目的结构将如下所示:
数据库结构: 数据库的结构将如下所示,以下文档存在于集合中。
示例1: 在这个示例中,我们使用mongoose建立了一个数据库连接,并在userSchema上定义了一个模型,该模型具有五个列或字段“_id”、“name”、“fixedDeposit”、“interest”和“tenure”。最后,我们从集合中删除了一个文档,然后在同一个文档对象上访问isDeleted()方法,并且我们得到了预期的输出true。
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
mongoose.connect("mongodb://localhost:27017/geeksforgeeks", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const userSchema = new mongoose.Schema({
name: String,
fixedDeposit: Number,
interest: Number,
tenure: Number
});
const User = mongoose.model('User', userSchema);
User.findOne({ name: 'Eric' }).then(document => {
console.log(document)
document.remove().then(doc => {
console.log(doc.$isDeleted());
});
});
运行程序的步骤: 从项目的根目录执行以下命令来运行应用程序:
node app.js
输出:
{
_id: new ObjectId("6390f4b9a4ca3e6bc9d41d61"),
name: 'Eric',
fixedDeposit: 10000,
interest: 0.01,
tenure: 12,
__v: 0
}
true
在这个示例中,我们使用mongoose建立了一个数据库连接,并在userSchema上定义了一个模型,其中包括五个列或字段:“_id”,“name”,“fixedDeposit”,“interest”和“tenure”。最后,我们从集合中删除了一个文档,并通过将false值传递给isDeleted()方法,明确地覆盖了mongoose认为该文档已被删除。最后,我们在同一个文档对象上访问isDeleted()方法,并获得了预期的输出false。尽管文档已经被删除,我们可以在数据库中验证相同的情况。 文件名:app.js Javascript
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
mongoose.connect("mongodb://localhost:27017/geeksforgeeks", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const userSchema = new mongoose.Schema({
name: String,
fixedDeposit: Number,
interest: Number,
tenure: Number
});
const User = mongoose.model('User', userSchema);
const isDeletedExample2 = async () => {
const document = await User.findOne({ name: 'Chintu' });
await document.remove();
document.isDeleted(false);
console.log(document.isDeleted());
}
isDeletedExample2();
运行程序的步骤: 要运行此应用程序,请在项目的根目录下执行以下命令:
node app.js
输出:
false
使用Robo3T GUI工具的数据库的GUI表示:
参考资料: https://mongoosejs.com/docs/api/document.html#document_Document-$isDeleted