Typegoose 和 NestJS:类型上不存在属性“save”

Nik*_*las 5 mongoose typescript nestjs typegoose

我使用 typegoose 和 Nestjs 作为我的后端服务器。我的pages.service.ts文件中已经有一个函数可以通过 ID 获取单个页面,称为getPageById(). 当我尝试从文件中的另一个函数调用此函数时pages.services.ts,我通过打字稿收到以下错误:

Property 'save' does not exist on type 'page'
Run Code Online (Sandbox Code Playgroud)

我的page.model.ts文件看起来像这样

Property 'save' does not exist on type 'page'
Run Code Online (Sandbox Code Playgroud)

我的pages.service.ts文件看起来像这样

import { DocumentType, modelOptions, prop, Severity } from "@typegoose/typegoose";
import { Content } from "./models/content.model";

@modelOptions({
    schemaOptions: {
        timestamps: true,
        toJSON: {
            transform: (doc: DocumentType<Page>, ret) => {
                delete ret.__v;
                ret.id = ret._id;
                delete ret._id;
            }
        }
    },
    options: {
        allowMixed: Severity.ALLOW
    }
})
export class Page {
    @prop({required: true})
    title: string;

    @prop({required: true})
    description: string;

    @prop({required: true})
    content: Content;

    @prop()
    createdAt?: Date;

    @prop()
    updatedAt?: Date;

    @prop()
    category: string;
}
Run Code Online (Sandbox Code Playgroud)

我需要什么才能让它工作?

更新

我可以修复这个错误。我将返回类型更改为Promise<DocumentType<Page>>这样

import { Injectable, NotFoundException } from '@nestjs/common';
import { ReturnModelType } from '@typegoose/typegoose';
import { InjectModel } from 'nestjs-typegoose';
import { createPageDto } from './dto/create-page.dto';
import { Page } from './page.entity';

@Injectable()
export class PagesService {
    constructor(
        @InjectModel(Page)
        private readonly pageModel: ReturnModelType<typeof Page>
    ) {}

    async getPageById(id: string): Promise<Page> {
        let page;
        try {
            page = await this.pageModel.findById(id);
        } catch (error) {
            throw new NotFoundException(`Page could not be found`);
        }
        if (!page) {
            throw new NotFoundException(`Page could not bet found`);
        }
        return page;
    }

    async updatePageCategory(id: string, category: string): Promise<Page> {
        const page = await this.getPageById(id);
        page.category = category;
        page.save() // i get the error here
        return page;
    }
}
Run Code Online (Sandbox Code Playgroud)

但这是解决这个问题的最好方法吗?

Rif*_*wad -1

 async updatePageCategory(id: string, category: string): Promise<Page> {
        const page = await this.getPageById(id);
        page.category = category;
        this.pageModel.save(page) // this is the solution
        return page;
    }
Run Code Online (Sandbox Code Playgroud)