当前位置: 首页 > 知识库问答 >
问题:

CastError: Cast to ObjectId的值"5be86bf8170c2c22f8bb93a6"在路径"_id"为模型"页面"失败

萧展鹏
2023-03-14

我正在构建一个应用程序与节点/快递/蒙戈/猫鼬。我遇到了一个似乎无法解决的错误,谷歌搜索到目前为止没有帮助。

我试图创建一个编辑页面,但遇到了一个错误。

Package.json

{
  "name": "cmscart",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.3",
    "connect-flash": "^0.1.1",
    "ejs": "^2.6.1",
    "express": "^4.16.4",
    "express-messages": "^1.0.1",
    "express-session": "^1.15.6",
    "express-validator": "^5.3.0",
    "mongoose": "^5.3.10"
  }
}

编辑页面。ejs

<%- include('../_layouts/adminheader')  %>

    <h2 class="page-title">Edit a Page</h2>
    <a href="/admin/pages" class="btn btn-primary">Back to all Pages</a>
    <br>
    <br>

    <form method="post" action="/admin/pages/edit-page/<%= slug %> ">
        <div class="form-group">
            <label for="">Title</label>
            <input type="text" name="title" value="<%= title %>" class="form-control" placeholder="Title">

        </div>

        <div class="form-group">
            <label for="">Slug</label>
            <input type="text" name="slug" value="<%= slug %>" class="form-control" placeholder="Slug">

        </div>
        <div class="form-group">
            <label for="">Content</label>
            <textarea name="content" class="form-control" placeholder="Content" rows="10" cols="30"><%= content %></textarea>

        </div>

        <input type="hidden" name="id" value="<%= id %> ">
        <button class="btn btn-default">Submit</button>
    </form>


<%- include('../_layouts/adminfooter')  %>

admin_pages.js

/* GET edit page*/

/*  here after edit page "/:slug" because we didn't have a fixed value of url*/
router.get('/edit-page/:slug', function (req, res) {

    Page.findOne({ slug: req.params.slug }, function (err, page) {

        if (err) return console.log(err);

        res.render('admin/edit_page', {
            title: page.title,
            slug: page.slug,
            content: page.content,
            id: page._id
        });
    });


});




/* POST edit page*/



router.post('/edit-page/:slug', function (req, res) {
    req.checkBody('title', 'Title must have a value').notEmpty();
    req.checkBody('content', 'Content must have a value').notEmpty();

    var title = req.body.title;
    var slug = req.body.slug.replace(/\s+/g, '-').toLowerCase();
    if (slug == "") slug = title.replace(/\s+/g, '-').toLowerCase();

    var content = req.body.content;
    var id = req.body.id;


    var errors = req.validationErrors();
    if (errors) {
        res.render('admin/edit_page', {
            errors: errors,
            title: title,
            slug: slug,
            content: content,
            id: id
        });
    } else {
        Page.findOne({ slug: slug, _id: { '$ne': id } }, function (err, page) {

            if (page) {
                req.flash('danger', 'Page slug exists , choose another.');
                res.render('admin/edit_page', {
                    title: title,
                    slug: slug,
                    content: content,
                    id:id
                });
            }
            else {
                Page.findByIdAndUpdate(id, function (err, page) {
                    if (err) {
                        return console.log(err);
                    }
                    page.title = title;
                    page.slug = slug;
                    page.content = content;


                    page.save(function (err) {
                        if (err)
                            return console.log(err);
                        req.flash('success', 'Page added!');
                        res.redirect('/admin/pages');

                    });
                });
            }
        });
    }


});

在这篇文章中,我遇到了这个错误

共有1个答案

乐正宜人
2023-03-14

“5BE86BF8170C2C22F2F8BB93A6”的末尾有一个空格字符。你试着先修一下吗?

在文件D:\项目\cmscart\node_modules\kareem\index.js第369行中使用id.trim()而不是id,或者您可以首先更正id开始时

 类似资料:
  • 我试图通过id从mongo检索数据,但当我添加外部链接(如样式文件或脚本文件)时,它工作正常,我收到此错误消息。 消息:“对模型“Blog”路径“_id”处的值“script.js”的转换失败,名称:“CastError”,stringValue:“script.js”,种类:“ObjectId”,值:“script”。js',路径:''u id',原因:未定义,模型:

  • 我正在为一个项目使用一个样例MongoDB数据库,当使用findById mongoose方法时,我得到了错误:“CastError:Cast to ObjectId值失败”…”在“公司”模型的路径“_id”处。我使用车把作为查看引擎。 错误 中间件文件: 这是路由文件

  • 我正在创建一个程序来执行CRUD操作,但出现了一个错误: 对于模型“colt\”的路径“\U id\”处的值“:5e1360c5edb2922570aa2611\”转换为ObjectId失败, 这是我的代码: 以下是显示编辑ejs文件: 这是我的猫鼬模式:

  • 嘿,伙计们真的需要一些关于删除路由的帮助。我正在使用RESTful路由,尝试遵循约定,添加删除路由时,我得到错误: CastError:模型"Blog"的路径"_id"处的值"X"转换为ObjectId失败 我已经在stackoverflow上搜索了这个问题,我能想到的最好的版本是猫鼬有一个错误。我把它回滚到V4.10.0,仍然在处理这个问题。我的代码如下:

  • Comments是嵌套在Post架构中的数组。我想通过推送一个新的评论到评论数组更新相应的帖子。但是得到了错误:CastError:对于模型“post”的路径“_id”处的值“comments”,向ObjectId的强制转换失败 阅读相关帖子 尝试使用“mongoose.types.objectid”,但不起作用 猫鼬版^5.5.4 我在这里使用的所有ID都是有效的 我认为问题出在“comment

  • 我看到了几个帖子与类似的我但我仍然得到同样的错误 这是我的用户模式 我的路线 我的应用程序。js 这是我的护照。我正在使用本地护照 passport可以将用户保存到数据库中 模型“用户”的路径“_id”处的值“586cc8b3ea780c071bbe2469”转换为ObjectId失败 我已经构建了两个应用程序,它们使用passport oauth,与上面显示的方式完全相同。所以我不知道为什么我会