Mongoose Schematype.checkRequired()函数
Schematype.checkRequired() 方法 是Mongoose API的一部分,用于设置和获取 checkRequired() 函数。它可以覆盖required属性的验证器,用于跳过required检查。让我们通过示例来了解 Schematype.checkRequired() 方法。
语法:
Schema.Types.String.checkRequired( function );
参数: 这个方法接受一个单一的参数,如上所述,并在下面进行描述:
- function: 这是执行验证操作的函数。
返回值: 该方法返回输入或设置函数。
设置Node.js应用:
步骤1: 使用以下命令创建一个Node.js应用:
npm init
步骤2: 创建NodeJS应用程序后,使用以下命令安装所需的模块:
npm install mongoose
项目结构: 项目的结构将会如下所示:
示例1: 在这个示例中,我们使用mongoose建立了一个数据库连接,并在userSchema上定义了模型,有两个列或字段“name”和“age”。我们还定义了一个getter函数checkRequired(),它始终返回true。这使得在name字段是空字符串的情况下,仍然可以创建新的文档,即使它是一个必需的字段。
文件名:app.js
// 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: {
type: String,
get: mongoose
.SchemaTypes
.String
.checkRequired(value => { return true }),
required: true
},
age: {
type: Number
},
});
const User = mongoose.model('User', userSchema);
User.create({ name: '', age: 25 }).then(user => {
console.log(user)
})
运行程序的步骤: 在项目的根目录下执行以下命令来运行应用程序:
node app.js
输出:
{
name: '',
age: 25,
_id: new ObjectId("6384a8ec353b83429bbdf0df"),
__v: 0
}
使用Robo3T GUI工具的数据库GUI表示:
示例2: 在这个示例中,我们使用mongoose建立了一个数据库连接,并定义了一个userSchema模型,有两个列或字段“name”和“age”。我们还定义了一个setter函数checkRequired(),它有条件地检查name属性的值是否为空。如果不为空,则返回“Default Value”或提供的值。
文件名:app.js
// 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: {
type: String,
set: mongoose
.SchemaTypes
.String
.checkRequired(value => {
return (value.length <= 0 ? 'Default Value' : value)
}),
required: true
},
age: {
type: Number
},
});
const User = mongoose.model('User', userSchema);
const user = new User({ name: '', age: 28 })
user.save()
console.log(user)
程序运行步骤: 从项目的根目录中执行以下命令以运行应用程序:
node app.js
输出:
{
name: 'Default Value',
age: 28,
_id: new ObjectId("6384a5ababbb876122181833")
}
使用Robo3T GUI工具的数据库的GUI表示:
示例 3: 在这个示例中,我们还定义了一个名为 checkRequired() 的setter函数,它会有条件地检查name属性的值是否为空,如果为空则返回“默认值”,如果不为空则返回提供的值。在这个示例中,我们创建了一个名为“User3”的新文档,并且可以在数据库中看到它。
文件名:app.js
// 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: {
type: String,
set: mongoose
.SchemaTypes
.String
.checkRequired(value => {
return (value.length <= 0 ? 'Default Value' : value)
}),
required: true
},
age: {
type: Number
},
});
const User = mongoose.model('User', userSchema);
const user = new User({ name: 'User3', age: 30 })
user.save()
console.log(user)
运行程序的步骤: 从项目的根目录执行以下命令来运行应用程序:
node app.js
输出:
{
name: 'Default Value',
age: 28,
_id: new ObjectId("6384a5ababbb876122181833")
}
使用Robo3T GUI工具的数据库的GUI表示:
参考: https://mongoosejs.com/docs/api/schematype.html#schematype_SchemaType-checkRequired