在打字稿中具有嵌套属性的Mongoose模式

时间:2019-02-19 00:20:00

标签: typescript mongoose nested

从打字稿开始,我尝试声明一个看起来像这样的Mongoose模式:

User
{
    name : { type: String, required: true },
    ...
    credentials :
    {
        email : { type : String, required : true },
        password : { type : String, required : true },
    },
    ...
}

我已经尝试过了:

import { Document, Types, Schema, Model, model } from "mongoose";

export interface ICredentials
{
    email?:string,
    password?:string,
}

export interface IUser extends Document
{
    name?:string;
    credentials?:ICredentials;
}

export var UserSchema:Schema = new Schema
({
    name            : { type : String, required : true },
    credentials     : 
    {
        email       : { type : String, required : true },
        password    : { type : String, required : true },
    },
});

export const User:Model<IUser> = model<IUser>("User", UserSchema);

当我想创建一个新用户时,该问题似乎可以正常工作。但是它没有凭证。 我已经尝试过U.credentials.email = "test@yopmail.com",但是没有用。 我该怎么做? 我很确定我需要声明一个实现ICredentials的类,但是我对打字稿不熟悉。

1 个答案:

答案 0 :(得分:0)

我最近遇到了类似的问题,这是我的解决方法; 我只是添加了一个类型断言..

U.credentials!.email = "test@yopmail.com"