猫鼬模式中的“required”是什么意思?

问题描述 投票:0回答:4

我正在编写一个猫鼬模式,我想了解它的属性。

这是我的架构:

var UserSchema = new Schema({
        name: String,
        username: { type: String, required: true, index: { unique: true }},
        password: { type: String, required: true, select: false }
});
  1. 为什么
    required
    没有声明为“name” - ?
  2. 为什么要宣布
    required
  3. select
    - true/false - 是什么意思?
  4. 何时
    index
    - 应该声明任何原因?
node.js mongodb mongoose
4个回答
27
投票

为什么`name'没有声明required - ?

答案:当某个字段必须填写时,在这种情况下我们会根据需要提及它。所以这里的“名称”不是必填字段或必填字段。

为什么声明“必需”?

答案:如上所述,当必须填写某个字段时,在这种情况下我们会按要求提及。

select - true/false - 是什么意思?

解答:这意味着在获取文档时默认不会在数据中返回。您可以指定默认情况下是否应在查询结果中包含或排除此路径。

架构选项

索引时 - 应该声明什么原因?

答案:当您频繁搜索该字段上的数据时,应该声明索引,因此当您在该字段上创建索引时,在这种情况下,它不会在所有集合中搜索该字段,而是会使用索引搜索该字段的值,并且将很快返回结果。

索引在 mongodb 中如何工作


3
投票

在这里,这些充当您的项目的模型。因此,required 用作验证,而索引用作该字段的索引

现在你有两种方法

  1. 要么将验证放在模式/模型中
  2. 或者只是使用
    JS/Jquery
    在前端手动创建表单验证,然后使用长路径

现在你的答案

  1. Name
    不是必须填写的,所以没有写
    required
  2. 当必须为该字段填写任何值时。然后
    required
    用于模式中。
  3. True/False
    启用或禁用对该字段进行验证。如果您使用 false 则意味着填写该字段根本不是强制性的。但使用
    false
    被认为是一个很好的做法。
  4. 索引是一种特殊的数据结构,用于在
    read/search
    操作期间提高性能。它提高了操作速度并存储在内存中。

1
投票

每当我们需要验证特定字段时,我们就使用 required。 required: true 表示您必须填写该字段。 required: false 意味着您可能会也可能不会填写该字段,但这是一个很好的做法。


0
投票

在 Mongoose 模式中,

required
选项用于指定创建新文档时特定字段必须具有值。如果某个字段被标记为
required
,Mongoose 将强制该字段不能为
null
undefined
,并且如果该字段丢失或为空,则会抛出验证错误。

例如:

const userSchema = new mongoose.Schema({
  username: {
    type: String,
    required: true, // This field is required
  },
  email: {
    type: String,
    required: [true, 'Email is required'], // Custom error message
  },
  age: {
    type: Number,
    required: false, // This field is optional
  },
});

在此架构中:

  • username
    email
    字段是必填字段,这意味着在创建新用户文档时必须提供它们。
  • age
    是可选的,因此可以省略。

您还可以使用数组为必填字段提供自定义错误消息,例如

required: [true, 'Custom error message']

© www.soinside.com 2019 - 2024. All rights reserved.