javascript - [ Actor 错误: Cast to ObjectId failed for value "undefined" at path "_id"

标签 javascript node.js mongodb mongoose

当尝试在我的删除(或更新)路由中使用 req.params.id 时,我收到上述消息。这困扰了我一段时间,我确信我在路线/对象的某个地方犯了错误。

将应用程序从 res.render("/campgrounds/+ req.params.id); 更改为 - res.render(“/露营地”);解决了问题,但没有像我希望的那样重新加载同一页面。我无法理解为什么当从 req.params.id 访问露营地路线时应用程序返回未定义。

var express= require("express");
var router = express.Router();
var Comment = require("../models/comment");
var Campground = require("../models/campgrounds");


// COMMENTS EDIT ROUTE



router.get("/campgrounds/:id/comments/:comment_id/edit", function(req, res){

            Comment.findById(req.params.comment_id, function(err, foundComment){
                if(err){
                    console.log(err)
                } else {
                    res.render("comments/edit", {campground_id: req.params.id, comment: foundComment})
                }
            })
        })


// comment update 

//campgrounds/:id/comments/:comment_id
router.put("/:comment_id", function(req, res){
    Comment.findByIdAndUpdate(req.params.comment_id, req.body.comment, function(err, updatedComment){
        if(err){
            console.log(err)
        } else {
            // KNOWN BUG - /campgrounds/ + req.params.id will return cast to boject failed for value undefined at path _id. having the app redirect to all campgrounds page as a work around
            res.redirect("/campgrounds");
        }
    })
})

// DELETE ROUTER
router.delete("/:comment_id", function(req, res){
    Comment.findByIdAndRemove(req.params.comment_id, function(err){
        if(err){
            res.redirect("back");
        } else {

            res.redirect("/campgrounds/" + req.params.id);
        }
    })
})



function isLoggedIn(req, res, next){
    if(req.isAuthenticated()){
     return next();   
    } else {
        res.redirect("/login");
    }
}

module.exports = router;

最佳答案

我遇到了同样的问题,这是由于路线顺序造成的。我将显示路线移至索引路线下方,因为“它流动得更好”,但这破坏了代码,并且混淆了它,因为我认为路线顺序很重要。如果您重新排序,请确保您的路线从应用程序的 Angular 来看是有意义的

关于javascript - [ Actor 错误: Cast to ObjectId failed for value "undefined" at path "_id",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46597923/

相关文章:

javascript - 设置 TextNode 样式

javascript - 为什么即使在 UseEffect Hook 中设置状态后我的 React 状态仍未定义?

javascript - 当项目进入选择框时如何获取数据?

javascript - 使用 Mongodb、Nodejs 和 AngularJS 上传文件时出错

java - Logstash 输入插件 JDBC 的 Mongodb 驱动程序类

javascript - 在 window.Unload 事件上将用户事件发布到服务器是个好主意吗?

javascript - 如何使用 mongoose(NodeJS) 删除 mongoDB 中的重复项

javascript - 如何动态创建集合名称(取决于用户信息)

mongodb - 在 Mongo 中将数据库设置为只读

javascript - SQL 一次搜索多个 id - Node/Express