Node.js CastError:value“的转换为ObjectId失败”;5be86bf8170c2c22f8bb93a6“;在路径上“_id";对于“型号”;第页“;
我正在用node/express/mongo/mongoose构建一个应用程序。我遇到了一个我似乎无法理解的错误,谷歌搜索到目前为止没有任何帮助 我试图创建一个编辑页面,但遇到了一个错误 Package.jsonNode.js CastError:value“的转换为ObjectId失败”;5be86bf8170c2c22f8bb93a6“;在路径上“_id";对于“型号”;第页“;,node.js,mongoose,Node.js,Mongoose,我正在用node/express/mongo/mongoose构建一个应用程序。我遇到了一个我似乎无法理解的错误,谷歌搜索到目前为止没有任何帮助 我试图创建一个编辑页面,但遇到了一个错误 Package.json { "name": "cmscart", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo \"Error: no test specifi
{
"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') %>
/* 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');
});
});
}
});
}
});
在这篇文章中,我遇到了这个错误
CastError:model“Page”的路径“\u id”处的值“5BE86BF8170C22F8BB93A6”的转换为ObjectId失败
在新的CastError(D:\projects\cmscart\node\u modules\mongoose\lib\error\cast.js:29:11)
在ObjectId.cast(D:\projects\cmscart\node\u modules\mongoose\lib\schema\ObjectId.js:156:13)
在ObjectId.SchemaType.applySetters(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:763:12)
在ObjectId.SchemaType.\u castForQuery(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:1166:15)
在ObjectId.SchemaType.castForQuery(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:1156:15)
位于ObjectId.SchemaType.castforqueryrapper(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:1135:15)
at cast(D:\projects\cmscart\node\u modules\mongoose\lib\cast.js:306:32)
在model.Query.Query.cast(D:\projects\cmscart\node\u modules\mongoose\lib\Query.js:4024:12)
位于model.Query.Query.\u castConditions(D:\projects\cmscart\node\u modules\mongoose\lib\Query.js:1690:10)
在model.Query.Query.\u findOne(D:\projects\cmscart\node\u modules\mongoose\lib\Query.js:1926:8)
位于process.nextTick(D:\projects\cmscart\node\u modules\kareem\index.js:369:33)
at_combinedTickCallback(内部/流程/下一步勾选js:132:7)
在进程中。_tick回调(内部/process/next_tick.js:181:9)
消息:“对模型“页面”的路径“_id”处的值“5be86bf8170c2c22f8bb93a6”强制转换为ObjectId失败,
名称:“卡斯特罗”,
stringValue:'5BE86BF8170C22F8BB93A6',
种类:“ObjectId”,
值:“5be86bf8170c2c22f8bb93a6”,
路径:“\u id”,
原因:未定义,
型号:
{[功能:模型]
hooks:Kareem{{u pres:[Object],{u posts:[Object]},
基数:
猫鼬{
连接:[数组],
模型:[对象],
modelSchemas:[对象],
选项:[对象],
_多元化:[功能:多元化],
插件:[Array]},
modelName:'页面',
型号:[功能:型号],
db:
国家联系{
base:[对象],
集合:[对象],
模型:[对象],
配置:[对象],
复制品:假,
选项:null,
其他数据库:[],
关系数据库:{},
国家:[反对],
_预备状态:1,
_这是错误的,
_是的,
“$internalEmitter”:[Object],
_听:错,
_connectionOptions:[对象],
名称:“cmscart”,
主机:“localhost”,
港口:27017,
用户:null,
pass:null,
客户端:[对象],
“$initialConnection”:[Object],
_事件:[对象],
_事件提示:1,
db:[对象]},
鉴别器:未定义,
“$appliedMethods”:正确,
“$appliedHooks”:正确,
模式:
模式{
obj:[对象],
路径:[对象],
别名:{},
子路径:{},
虚拟对象:[对象],
SingleNestedPath:{},
嵌套:{},
继承:{},
呼叫队列:[],
_索引:[],
方法:{},
方法选项:{},
静态:{},
树:[对象],
查询:{},
子架构:[],
插件:[数组],
“$id”:1,
s:[对象],
_用户提供的选项:{},
选项:[对象],
“$globalPluginsApplied”:true},
收藏:
本地采集{
集合:[对象],
选项:[对象],
名称:'pages',
collectionName:“页面”,
conn:[对象],
队列:[],
缓冲区:false,
发射器:[对象]},
查询:{[Function]base:[Object]},
“$\uu insertMany”:[函数],
“$init”:承诺{[Circular]},
“$catch”:true}
{CastError:对于模型“Page”的路径“_id”处的值“5be86bf8170c2c22f8bb93a6”,转换为ObjectId失败
在新的CastError(D:\projects\cmscart\node\u modules\mongoose\lib\error\cast.js:29:11)
在ObjectId.cast(D:\projects\cmscart\node\u modules\mongoose\lib\schema\ObjectId.js:156:13)
在ObjectId.SchemaType.applySetters(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:763:12)
在ObjectId.SchemaType.\u castForQuery(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:1166:15)
在ObjectId.SchemaType.castForQuery(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:1156:15)
位于ObjectId.SchemaType.castforqueryrapper(D:\projects\cmscart\node\u modules\mongoose\lib\SchemaType.js:1135:15)
at cast(D:\projects\cmscart\node\u modules\mongoose\lib\cast.js:306:32)
在model.Query.Query.cast(D:\projects\cmscart\node\u modules\mongoose\lib\Query.js:4024:12)
位于model.Query.Query.\u castConditions(D:\projects\cmscart\node\u modules\mongoose\lib\Query.js:1690:10)
在model.Query.Query.\u findOne(D:\projects\cmscart\node\u modules\mongoose\lib\Query.js:1926:8)
位于process.nextTick(D:\projects\cmscart\node\u modules\kareem\index.js:369:33)
at_combinedTickCallback(内部/流程/下一步勾选js:132:7)
在进程中。_tick回调(内部/process/next_tick.js:181:9)
消息:“对模型“页面”的路径“_id”处的值“5be86bf8170c2c22f8bb93a6”强制转换为ObjectId失败,
名称:“卡斯特罗”,
stringValue:'5BE86BF8170C22F8BB93A6',
种类:“ObjectId”,
值:“5be86bf8170c2c22f8bb93a6”,
路径:“\u id”,
原因:未定义,
型号:
{[功能:模型]
hooks:Kareem{{u pres:[Object],{u posts:[Object]},
基数:
猫鼬{
连接:[数组],
模型:[对象],
modelSchemas:[对象],
o