javascript - 使用 body-parser 时 findByIdAndRemove 不起作用
问题描述
app.post("/delete", (req, res) => {
const deleteItem = req.body.checkbox;
Item.findByIdAndRemove(deleteItem, (err) => {
if (!err) console.log("deleted succesfully");
else console.log(err);
});
res.redirect("/");
});
这里 deleteItem 在控制台日志记录时返回字符串,但是当我尝试 deleteItem 时出现以下错误
MongooseError [CastError]: Cast to ObjectId failed for value "61861e5c0bb4650c066f9e60 " at path "_id" for model "Item"
at new CastError (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\error\cast.js:27:11)
at ObjectId.cast (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\schema\objectid.js:158:13)
at ObjectId.SchemaType._castForQuery (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\schematype.js:1088:15)
at ObjectId.castForQuery (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\schema\objectid.js:198:15)
at ObjectId.SchemaType.castForQueryWrapper (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\schematype.js:1045:15)
at cast (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\cast.js:275:32)
at model.Query.Query.cast (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\query.js:3305:12)
at model.Query.Query._castConditions (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\query.js:1295:10)
at model.Query.Query._findOneAndRemove (D:\College\web dev\todolist-v2\node_modules\mongoose\lib\query.js:2251:8)
at D:\College\web dev\todolist-v2\node_modules\kareem\index.js:250:8
at D:\College\web dev\todolist-v2\node_modules\kareem\index.js:23:7
at processTicksAndRejections (node:internal/process/task_queues:78:11) {
stringValue: '"61861e5c0bb4650c066f9e60 "',
kind: 'ObjectId',
value: '61861e5c0bb4650c066f9e60 ',
path: '_id',
reason: undefined,
解决方案
如果您检查异常堆栈跟踪:
Cast to ObjectId failed for value "61861e5c0bb4650c066f9e60 "
您在 ID 末尾有一个额外的空格。可能这就是问题所在,因为作为 ObjectID 传递的参数必须是 12 个字节的字符串或 24 个十六进制字符的字符串。在这种情况下,它是 25 个字符。
推荐阅读
- java - spring rest 如何识别新会话?
- sql - PostgreSQL 中的“Information_schema.columns”表下未列出新创建的模式和表
- github - Git rebase 为许多提交添加作者和电子邮件地址
- linux - 获取存储在文件中的变量的值
- android - Google 已压缩您的应用程序。通过大小压缩,某些配置现在在 0MB 大小限制内
- synchronization - perforce p4 与 -x 选项性能
- laravel - Laravel Sail SQL 连接超时
- angular - 如何设置复杂 FormArray 反应形式的值
- reactjs - 如何制作带有 2 个或更多“slug”的路线?(React-Router-Dom)
- sql-server - SQL Server 2008 上的 ServiceStack ORMLite 分页