сообщение: «Преобразование в ObjectId завершилось неудачно для значения« xxxxxx »по пути« _id »для модели« item »», имя: «CastError», model: Model {item}} - PullRequest
0 голосов
/ 31 марта 2020

Мне пришлось удалить задачу со страницы, и я использовал 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");
});

Это был мой код, пожалуйста, помогите мне, я пытался решить эту проблему в течение последних трех дней, и я так близок к взлому

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

В конце строки была пробел, которого я не видел, поэтому я использовал checkedItemId.trim(), и он удалил все пробелы, и мой код работал отлично

0 голосов
/ 10 апреля 2020

У меня была такая же проблема, как и у вас, но, к счастью, я решил ее сейчас

в этом коде нет ошибок, вы должны проверить свой файл list.e js, если вы можете найти ошибки типа как я сделал и реформировать кодекс; Прекрасно компилируется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...