mongoose 错误TS2339:类型“Document〈unknown”上不存在属性“remove”,

4uqofj5v  于 2023-03-12  发布在  Go
关注(0)|答案(1)|浏览(208)

我的应用程序出现此错误
运行时错误:

TSError:无法编译类型脚本:src/控制器/注解。ts:134:20 -错误TS 2339:类型“Document〈unknown,{},{ createdAt:”上不存在属性“remove”本地日期;更新时间:本地日期;} & {标题:字符串;文本?:弦|未定义; }〉&忽略〈{创建时间:本地日期;更新时间:本地日期;} & { ...; } & { ...;},从不〉'。

134等待注解.删除()
突出显示的错误:

任何属性“remove "在类型”Document〈unknown,{},{ createdAt:本地日期;更新时间:本地日期;} & {标题:字符串;文本?:弦|未定义; }〉&忽略〈{创建时间:本地日期;更新时间:本地日期;} & { ...; } & { ...;},从不〉'. ts(2339)

控制器/注解

import NoteModel from "../models/note";
import {RequestHandler} from 'express';
import createHttpErrors from "http-errors";
import mongoose from "mongoose";

export const deleteNote: RequestHandler = async (req, res, next) => {
    const noteId = req.params.noteId;

    try{

        if(!mongoose.isValidObjectId(noteId)){
            throw createHttpErrors(400, "invalid Note ID")
        }

        const note = await NoteModel.findById(noteId).exec();

        if(!note){
            throw createHttpErrors(404, "Note not found")
        }

        await note.remove();

        res.sendStatus(204)
    }
    catch(error){
       next(error)
    }
}

型号/注解

import { InferSchemaType, model, Schema } from "mongoose";

const noteSchema = new Schema({
    title: { type: String, required: true},
    text: { type: String},
}, {timestamps: true})

type Note = InferSchemaType<typeof noteSchema>

export default model<Note>("Note",noteSchema)

路由器/注解

import express from 'express';
import * as NoteController from '../controllers/notes'
const router = express.Router()

router.delete('/:noteId', NoteController.deleteNote);
hgtggwj0

hgtggwj01#

我猜您正在遵循相同的教程。
如果要保留:

if(!note){
        throw createHttpErrors(404, "Note not found")
    }

则使用

await note.deleteOne()

remove()不能再使用(源代码:How do I remove documents using Node.js Mongoose?

相关问题