使用 TypeScript 在 mongoose.Schema 的 `required` 字段中使用函数

Posted

技术标签:

【中文标题】使用 TypeScript 在 mongoose.Schema 的 `required` 字段中使用函数【英文标题】:Use function in `required` field in mongoose.Schema using TypeScript 【发布时间】:2020-05-29 05:56:37 【问题描述】:

我正在尝试创建一个动态架构,其中需要基于另一个字段的值的字段。

示例架构:

const foo = new Schema(
    status: 
        type: String,
        default: "in_process"
    ,
    route: 
        type: String,
        default: ""
    ,
    code: 
        type: Number,
        default: 0,
        required: function () 
           return this.route === "Results";
        
    ,

);

当我这样做时,TS 会通知我这个错误:

Property 'route' does not exist on type 'Schema<any> | SchemaTypeOpts<any> | SchemaType'.
  Property 'route' does not exist on type 'Schema<any>'.

我应该如何正确处理这种情况?

【问题讨论】:

【参考方案1】:
interface Ifoo extends Document 
    status:string
    route:string
    code:number



const foo = new Schema(
    status: 
        type: String,
        default: "in_process"
    ,
    route: 
        type: String,
        default: ""
    ,
    code: 
            type: Number,
            default: 0,
            required: function (this:Ifoo) 
               return this.route === "Results";
            
        ,

);
    

【讨论】:

嗨@user16348030,请考虑为您的答案添加一些解释。

以上是关于使用 TypeScript 在 mongoose.Schema 的 `required` 字段中使用函数的主要内容,如果未能解决你的问题,请参考以下文章

无法在 NodeJS 中使用 Mongoose 和 Typescript 扩展基类

如何在 typescript 中使用 mongoose 在 mongodb 中插入数据?

使用 Typescript 在 Mongoose 中缺少子文档方法

使用 Typescript 在 Mongoose 中缺少子文档方法

使用`let cached = global.mongoose`时出现Next.js + Typescript + mongoose错误

使用 Typescript 从 Mongoose 模型访问文档属性