【发布时间】:2020-07-09 19:54:54
【问题描述】:
运行 Node.js 服务器时出现此错误: CastError:模型“博客”的路径“_id”处值“5f04cc85d5db3f0d582fb51a”的值“5f04cc85d5db3f0d582fb51a”转换为 ObjectId 失败
我已经尝试了所有我知道的方法来做到这一点,但它不起作用。
这是来自 blogapp.js 的代码 在 RESTful Routes 之后,我想在单击 Read more 时显示有关特定帖子的更多详细信息。但它不起作用,所以我决定打印错误,这就是它所显示的内容:Casterror: .....
var express = require('express');
app = express();
bodyParser = require('body-parser');
mongoose = require('mongoose')
// APP CONFIG
mongoose.connect('mongodb://localhost/restful_blog_app', { useNewUrlParser: true, useUnifiedTopology: true});
app.set('view engine', 'ejs');
app.use(express.static('Public'));
app.use(bodyParser.urlencoded({extended:true}))
// MONGOOSE/MODEL CONFIG
var blogSchema = new mongoose.Schema({
title:String,
image:String,
body: String,
created :{type: Date, default: Date.now}
});
var Blog = mongoose.model('Blog', blogSchema)
// RESTFUL ROUTES
app.get('/', (req,res) => {
res.redirect('/blogs')
})
// INDEX ROUTE
app.get('/blogs', (req,res) => {
Blog.find({}, (err, blogs) => {
if(err){
console.log(err);
}else{
res.render('blogindex', {blogs:blogs})
}
})
});
// NEW ROUTE
app.get('/blogs/new', (req,res) => {
res.render('blognew')
});
// CREATE ROUTE
app.post('/blogs', (req,res) => {
// create blog
Blog.create(req.body.blog, (err, newBlog) => {
if(err){
res.render('new');
}else{
// then redirect to the index
res.redirect('/blogs')
}
});
});
// SHOW ROUTE
app.get('/blogs/:id', (req,res) => {
Blog.findById(req.params.id , (err, Blog)=>{
if(err){
res.send(` ${err}`);
}else{
res.render('blogshow', {blog: Blog})
}
});
});
app.listen('5000', ()=>{
console.log("Blog Server running on port 5000");
});
我不知道我哪里弄错了 这是来自 blogshow.ejs 的代码
<%- include ('partials/blogheader') %>
<div class="ui main text container segment">
<div class="ui huge header"> <%= blog.title %> </div>
</div>
<%- include ('partials/blogfooter') %>
【问题讨论】:
-
您的 mongoDB 架构上的
_id类型是什么?是字符串还是 ObjectId?
标签: node.js mongodb express body-parser