感谢您抽出时间阅读这篇文章.

我有一个这样定义的模式,

const mongoose = require('mongoose');


//modelo de categorias
const categoriaEsquema = mongoose.Schema({
    nombre: {
        type: String,
        required: true
    },
    color: {
        type: String,
    },
    icono: {
        type: String,
    },
    /*imagen: {
        type: String,
        required: true
    },*/ //Aún no se usa
})

exports.CategoriaModelo = mongoose.model('Categoria',categoriaEsquema);

我正在try 使用其他页面中的以下代码来实现删除请求

const {CategoriaModelo} = require('../modelos/categorias');
const express = require('express');
const router = express.Router();

router.delete('/:id', (req, res) => {
    CategoriaModelo.findByIdAndRemove(req.params.id);
});


module.exports = router;

但它给了我这个错误:

Error

请帮帮我,提前谢谢你

我试着用其他方法比如FinOneAnd...等,但它似乎根本没有检测到Mongoose方法.

推荐答案

您可以使用findByIdAndDelete来代替,并等待异步调用,如下所示:

router.delete('/:id', async (req, res) => { //< Mark callback as async
   try{
      const deletedDoc = await CategoriaModelo.findByIdAndDelete(req.params.id);
      return res.status(200).json({
         message: 'Delete was a success'
      })
   }catch(err){
      console.log(err);
      //Handle error
      return res.status(400).json({
         message: 'Error on server'
      });
   }
});

Edit:

您还需要在架构定义中使用关键字new:

const categoriaEsquema = new mongoose.Schema({
   //...
});

Node.js相关问答推荐

使用prisma迁移到SQL失败

MongoDB:更新批量操作中许多不能正常工作的内容

express返回意外的URL

已知NPM无法在node.js V12上运行的问题

TS 后端开发:prismagenerate找不到已安装的@tsed/prisma包

如何使用 Node.js 连接到 Cloud SQL?

SvelteKit应用程序立即退出,没有错误

Google App Engine 突然不允许我部署我的 node.js 应用程序

使用 Nodejs 获取 Firebase 云消息传递历史记录

未捕获的错误: 只能用作 元素的子元素,永远不会直接呈现.请将您的 包裹在

Nodejs-console.error vs util.debug

来自 Node-aws 的 Dynamo Local:所有操作都失败无法对不存在的表执行操作

如何从 Redis 保存和检索会话

ChildProcess 关闭、退出事件之间的区别

Forever + Nodemon 一起运行

#!/bin/env是什么意思(在 node.js 脚本的顶部)?

Express js 阻止 GET /favicon.ico

从 node.js 连接到 mongodb 时出现 ECONNREFUSED 错误

为什么 Node.js 没有原生 DOM?

NodeJS:如何调试检测到 EventEmitter 内存泄漏.添加了 11 个侦听器