Получил пустую строку при передаче «_id» от мангустаJavascript

Форум по Javascript
Ответить
Гость
 Получил пустую строку при передаче «_id» от мангуста

Сообщение Гость »


Я создаю приложение со списком дел, используя node js, express и mongoose.

теперь я пробую функцию удаления элемента, используя флажок из формы, чтобы передать item._id в экспресс,

Мой тип данных для элементов списка дел такой:

const todoSchema = новый mongoose.Schema({ контекст: строка }); todoList> db.todolists.find() [ { _id: ObjectId("65085d9277578bec0a1b9415"), контекст: «злой», __в: 0 }, { _id: ObjectId("65085db177578bec0a1b9421"), контекст: 'чрезвычайно зол', __в: 0 }, вот мой код EJS:



а вот мой JS-код:

app.post("/delete", async(req, res) => { constcheckItem = req.body.checkbox; console.log(checkedItem); todolist.deleteOne({_id:checkItem}) .then(console.log(`Элемент (${checkedItem}) был удален.`)).catch((err) => { console.log(ошибка); }); items = await todolist.find({}, { _id: 0, context: 1 }); console.log(`теперь список дел содержит ${items.length} элементов.`) res.redirect("/"); }); Я распечатываю item._id (req.body.checkbox). и получил только пустую строку "".
поймать ошибку:

CastError: не удалось выполнить приведение к ObjectId для значения "" (строка типа) по пути "_id" для модели "todolist" в ObjectId.cast (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/schema/objectid.js:250:11) в SchemaType.applySetters (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/schematype.js:1220:12) в SchemaType.castForQuery (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/schematype.js:1632:15) при приведении (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/cast.js:356:32) в Query.cast (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:4911:12) в Query._castConditions (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:2232:10) в model.Query._deleteOne (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:3021:8) в model.Query.exec (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:4430:28) atprocess.processTicksAndRejections(node:internal/process/task_queues:95:5) { строковое значение: '""', Формат сообщения: неопределенный, вид: 'ObjectId', ценить: '', путь: '_id', причина: BSONError: переданный аргумент должен быть строкой из 12 байтов, строкой из 24 шестнадцатеричных символов или целым числом. по новому ObjectId (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/bson/lib/bson.cjs:2055:23) в castObjectId (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/cast/objectid.js:25:12) в ObjectId.cast (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/schema/objectid.js:248:12) в SchemaType.applySetters (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/schematype.js:1220:12) в SchemaType.castForQuery (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/schematype.js:1632:15) при приведении (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/cast.js:356:32) в Query.cast (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:4911:12) в Query._castConditions (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:2232:10) в model.Query._deleteOne (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:3021:8) в model.Query.exec (/Users/xuxiang/Documents/BACKEND/todoList-one/node_modules/mongoose/lib/query.js:4430:28), Тип значения: 'строка', модель: Модель { todolist } } Но когда я передаю item.context в выражение, он может успешно получить правильный результат. для _id и __v я могу получить только пустую строку "".

Я тоже искал обсуждение курса, спрашивал в ChatGPT, решения не получил.

Спасибо за ваше время и помощь.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»