You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用express.Router()时遇User.remove不是函数的错误求助

解决方案

错误原因

Mongoose v6及以上版本已废弃Model.remove()方法,调用User.remove({})会触发TypeError,官方推荐使用deleteMany()或deleteOne()替代。

代码修正

  1. 替换remove()为deleteMany()
    修改数据导入路由代码,将User.remove({})和Product.remove({})替换为deleteMany({}):
import express from "express";
import User from "./Models/UserModel.js";
import users from "./data/users.js";
import Product from "./Models/ProductModel.js";
// 补充导入products数据,否则Product.insertMany(products)会报错
import products from "./data/products.js";

const ImportData = express.Router()

ImportData.post(
    "/user",
    async (req, res) => {
      await User.deleteMany({});
      const importUser = await User.insertMany(users);
      res.send({ importUser });
    }
);

ImportData.post("/products",async (req,res)=>{
    await Product.deleteMany({});
    const importProducts = await Product.insertMany(products);
    res.send({ importProducts });
});

export default ImportData;
  1. 补充缺失的products导入
    产品导入路由中使用了products变量,但原代码未导入该数据,需添加对应导入语句(如上述代码中的import products from "./data/products.js";),避免出现products is not defined的错误。

验证修改

重启服务器后,重新调用/user和/products的POST接口,即可正常清空现有数据并导入新数据。

内容的提问来源于stack exchange,提问作者Sanchosmore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:05:17