如何创建猫鼬模式以仅接受一些谨慎的值

Posted

技术标签:

【中文标题】如何创建猫鼬模式以仅接受一些谨慎的值【英文标题】:How to create a mongoose schema to accept only some discreet values 【发布时间】:2021-11-13 10:47:34 【问题描述】:

假设我有这个架构。

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const TestSchema = new Schema(
  language: 
  required: true,
  default: 'eng',
  ,
);

// Compile model from schema
const TestModel = mongoose.model("Test", TestSchema);

如何配置此架构,以便 language 字段仅接受其值为 enghbrw。如果它接收到一些其他值,它将返回一个错误。

我知道可以使用 if else 显式完成,但我想知道它是否可以内置到架构中。

【问题讨论】:

你可以使用enum属性,看这个问题How to Create and Use Enum in Mongoose 非常感谢它确实回答了我的问题 【参考方案1】:

这就是它的完成方式:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const TestSchema = new Schema(
  language: 
    required: true,
    enum: ['eng', 'hbrw']
    default: 'eng',
  ,
);

// Compile model from schema
const TestModel = mongoose.model("Test", TestSchema);

枚举字段根据enum 字段中给出的数据数组验证即将到来的数据。

感谢@turivishal 提供此解决方案

【讨论】:

以上是关于如何创建猫鼬模式以仅接受一些谨慎的值的主要内容,如果未能解决你的问题,请参考以下文章

在猫鼬中,如果我正在创建一个包含 4 个字段的模式。但我只保存两个字段的值。如何更新未给出的字段值?

如何验证猫鼬模式的动态密钥

我是猫鼬的新手。我想通过添加作为另一个模式的值的字段来修改现有模式?

如何使用猫鼬以编程方式在节点服务器上仅预加载一次 MongoDB 文档

查询父项时如何获取猫鼬子文档数组中的值的聚合总和?

如何定义 Typescript 部分类型以仅接受属性