首页 > 解决方案 > 消息:“模型“item”的路径“_id”处的值“xxxxxx”转换为 ObjectId 失败,名称:“CastError”,模型:模型 { item } }

问题描述

我不得不从页面中删除一个待办事项,我使用了 findByIdAndRemove 和 findByIdAndDelete 但它总是显示上述错误我搜索并使用了所有可能的方法但他们没有解决我的错误请帮助我//代码如下

//jshint esversion:6

const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const date = require(__dirname + "/date.js");

const app = express();

app.set("view engine", "ejs");

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json())
app.use(express.static("public"));
mongoose.connect("mongodb://localhost:27017/todoDB", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useFindAndModify: false
});


const itemSchema = new mongoose.Schema(
  {
    name: String
  },
  // { _id: false }
);

const Item = mongoose.model("item", itemSchema);

const item1 = new Item({
  name: "Welcome to todolist"
});

const item2 = new Item({
  name: "Click + button to add your todo"
});

const item3 = new Item({
  name: "<-----Hit this to delete your items"
});

const defaultItems = [item1, item2, item3];

app.get("/", function(req, res) {
  const day = date.getDate();
  Item.find({}, function(err, foundItems) {
    if (foundItems.length === 0) {
      Item.insertMany(defaultItems, function(err) {
        if (err) {
          console.log(err);
        }
      });
      res.redirect("/");
    } else {
      res.render("list", { listTitle: day, newListItems: foundItems });
    }
  });
});

app.post("/", function(req, res) {
  const itemName = req.body.newItem;
  const item = new Item({
    name: itemName
  });
  item.save();
  res.redirect("/");
});

app.post("/delete", function(req, res) {
  const checkedItemId = req.body.checkBox;
  console.log(checkedItemId);
  Item.findByIdAndRemove(checkedItemId.str, function(err) {
    if (!err) {
      console.log("Successfully removed the checked item");
      res.redirect("/");
    } else {
      console.log(err);
    }
  });
});


app.listen(3000, function() {
  console.log("Server started on port 3000");
});

这是我的代码,请帮助我过去三天我一直在尝试解决这个问题,但我已经快要崩溃了

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


字符串末尾有一个空格,我没有看到,所以我使用checkedItemId.trim()它并删除了所有空格,我的代码运行良好


推荐阅读