繁体   English   中英

猫鼬填充上的打字稿接口

[英]Typescript interface on mongoose populate

所以我有如下这个猫鼬模型:

const userSchema: mongoose.Schema = new mongoose.Schema(
    {
        _id: String,
        email: {
            type: String,
            required: true,
        },
        firstName: String,
        lastName: String,       
        phoneNumber: String,
        cmt: {
            type: String,
            ref: 'Cmt',
        },      
    },  
);

如您所见,cmt 字段指向另一个名为Cmt的模型,我将使用其详细信息populate

现在在另一个实例中,我需要传入 cmt id 以将其与userSchema链接

但那时我会收到打字稿错误"Type 'string' is not assignable to type 'ICmt'."

ICmt是 Cmt 的接口定义。

下面给出了userschema接口。

export interface IUser {
    _id: string;
    email: string;
    firstName: string;
    lastName: string;
    phoneNumber: string;
    cmt: ICmt;
    createdAt?: Date;
    updatedAt?: Date;
}

如何在不混淆填充查询和创建查询的情况下修复此错误?

这是一个简单的解决方案,但我错了。

你可以使用| (or)界面上的声明,这将解决可能出现的tslint错误的问题

所以我的用户界面将变成

export interface IUser {
    _id: string;
    email: string;
    firstName: string;
    lastName: string;
    phoneNumber: string;
    cmt: ICmt | string;
    createdAt?: Date;
    updatedAt?: Date;
}

所以不会再有任何我需要担心的 tslint 错误或 tsignore

以下将起作用,但需要对任何一种情况进行类型检查。

export interface User {  // Issue when using I in declarations v.6++
  cmt: Cmt | mongoose.Types.ObjectID;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM