Предположим, я хочу, чтобы конечные точки REST выглядели примерно так:
/blogs
/blogs/new
/blogs/:id
/blogs/:id/edit
/blogs/:id/comments/new
CRUD для каждого if, если имеет смысл.Например, / blogs POST создает новый блог, GET выбирает все блоги./ blogs /: id GET выбирает только один блог с соответствующими комментариями./ blogs /: id / comments / POST создает новый комментарий к этому конкретному блогу
Теперь все работает отлично, но связь комментариев с каждым блогом работает неправильно.Я думаю, что мои модели или / blogs /: id / comments / new route создают эту ошибку.
blogSchema
var blogSchema=new mongoose.Schema({
title:String,
image:String,
body:{type:String, default:""},
created:{ type: Date },
comments:[{
type:mongoose.Schema.Types.ObjectId,
ref:'Comment'
}]
});
commentSchema
var commentSchema=mongoose.Schema({
text:String,
author:String
})
весь маршрут, связанный с комментарием
app.get('/blogs/:id/comments/new',function(req,res){
//find blog by id
Blog.findById(req.params.id,function(err,blog){
if(err){
console.log(err)
}else{
res.render('comments/new.ejs',{blog:blog})
}
})
})
app.post('/blogs/:id/comments',function(req,res){
//lookup blog using id
Blog.findById(req.params.id,function(err,blog){
if(err){
console.log(err)
}else{
Comment.create(req.body.comment,function(err,comment){
if(err){
console.log(err)
}else{
blog.comments.push(comment);
blog.save()
res.redirect('/blogs/'+blog._id);
}
})
}
})
})
finally / blogs /: id
app.get('/blogs/:id',function(req,res){
Blog.findById(req.params.id).populate('comments').exec(function(err,foundBlog){
if(err){
console.log(err)
res.redirect('/blogs')
}else{
res.render('blogs/show.ejs',{blog:foundBlog})
}
})
})
Ошибка :
IЯ знаю, что довольно сложно понять все эти вещи, не работая с ним, поэтому я даю свою виртуальную среду , где вы найдете мой проект и сможете им манипулировать. Любая помощь будет признательна.
Спасибо за ваше время.Заранее спасибо.