Mongoose SchemaType.prototype.immutable()函数

Mongoose SchemaType.prototype.immutable()函数

Mongoose是一个用于node.js环境的MongoDB对象建模和处理库。

Mongoose SchemaType immutable属性 设置mongoose模式路径为不可变,即除非模式类型的 isNew 属性设置为 true ,否则不允许更改路径值。让我们通过一些示例来更加了解这个。

语法:

mongoose.schema({
    [name]: {
        type: [type],
        immmutable: Boolean (true | false)
    }
})

参数: 它接受一个布尔值作为参数。

返回类型: 它返回一个SchemaType作为响应。

创建node应用并安装Mongoose:

步骤1: 使用以下命令创建一个node应用:

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

步骤2: 在创建 ReactJS 应用程序之后,使用以下命令安装所需的模块:

npm install mongoose

项目结构:

将如下所示。

Mongoose SchemaType.prototype.immutable()函数

使用MongoDB Compass的GUI表示数据库: 当前,集合中没有数据。

Mongoose SchemaType.prototype.immutable()函数

示例1: 在这个示例中,我们将创建一个getter和一个不可变属性 name, 并尝试通过直接将其赋值给不同的名称来修改其值。

文件名: main.js

//Importing the module 
const mongoose = require('mongoose') 
  
// Connecting to the database 
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, 
        immutable: true
    } 
}); 
  
const Person = mongoose.model('Person', personSchema); 
  
(async () => { 
    await Person.create({ name: 'John' }); 
    const person = await Person.findOne({ name: 'John' }); 
  
    console.log(person.isNew); 
    person.name = 'new name'; 
    console.log(person.name); 
})() 

运行应用程序的步骤: 在项目的根目录中使用以下命令运行应用程序:

node main.js

输出: 我们看到结果中的值保持不变。

Mongoose SchemaType.prototype.immutable()函数

使用MongoDB Compass的数据库的GUI表示:

Mongoose SchemaType.prototype.immutable()函数

示例2: 在这个示例中,我们将创建一个可获取不可更改的属性名的getter,并尝试使用mongoose Schema API的 updateOne 辅助方法修改其值。

文件名: 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, 
        immutable: true
    } 
}); 
  
const Person = mongoose.model('Person', personSchema); 
  
(async () => { 
    await Person.create({ name: 'John' }); 
    Person.updateOne({ name: 'John' }, { name: 'Doe' }, 
        { strict: 'throw' }) 
        .then(() => null, err => err) 
  
    const persons = await Person.find(); 
  
    console.log(persons); 
})() 

运行应用程序的步骤: 从项目的根目录使用以下命令运行应用程序:

node main.js

输出: 我们可以看到结果中的值保持不变。

Mongoose SchemaType.prototype.immutable()函数

使用MongoDB Compass的数据库的GUI表示:

Mongoose SchemaType.prototype.immutable()函数

参考: https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-immutable

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程