комментарии не отображаются на странице - PullRequest
1 голос
/ 09 ноября 2019

Комментарии не отображаются. Идентификаторы комментариев помещаются внутрь массива в blogSchema ... но когда я console.log создаю блог, он не показывает комментарии и показывает пустой массив. когда я использую метод find для комментариев, он правильно показывает комментарии в оболочке mongo. Таким образом, единственная проблема заключается в том, что комментарии не отображаются на веб-странице

, когда я console.log конкретного блога, массив комментариев оказывается пустым ... показано ниже

{ comment: [],
  _id: 5dc707975f5acc0c34a4ecac,
  title: 'test post',
  image: '',
  body: 'this is a test post\r\n',
  created: 2019-11-09T18:38:15.244Z,
  __v: 1 } 

 // COMMENT 
app.get("/blogs/:id/comments/new", function(req, res) {
    Blog.findById(req.params.id, function(err, foundBlog) {
        if(err) {
            res.send(err);
        } else {
            res.render("./comments/new", {blog: foundBlog});
        }
    });
});

app.post("/blogs/:id/comments", function(req, res) {
    Blog.findById(req.params.id, function(err, foundBlog) {
        Comment.create(req.body.comment, function(err, comment) {
            if(err) {
                res.send(err);
            } else {
                console.log(comment);
                foundBlog.comment.push(comment);
                foundBlog.save();
                res.redirect("/blogs/" + foundBlog._id);
            }
        });
    });
});

.
//blogSchema
var mongoose = require("mongoose");

var blogSchema = new mongoose.Schema({
    title: String,
    image: String,
    body: String,
    created: {
        type: Date,
        default: Date.now
    },
    comment: [{
        type: mongoose.Schema.Types.ObjectId,
        href: "Comment"
    }]
});
module.exports = mongoose.model("Blog", blogSchema);

//commentSchema
var mongoose = require("mongoose");

var commentSchema = new mongoose.Schema ({
    content: String,
    author: String
});

module.exports = mongoose.model("Comment", commentSchema);

//to show comments on webpage


SHOW route
app.get("/blogs/:id", function(req, res) {
    Blog.findById(req.params.id).populate("comments").exec(function(err, foundBlog) {
        if(err) {
            res.send(err);
        } else {
            res.render("show", {blog: foundBlog});
        }
    });
});
<% blog.comment.forEach(function(comment){ %>
        <p>
            <strong><%=comment.author%></strong>
        </p>
        <p>
            <%=comment.content%>
        </p>
    <% }) %>

// mongo shell
 show dbs
admin     0.000GB
blog_app  0.000GB
config    0.000GB
local     0.000GB
> use blog_app
switched to db blog_app
> show collections
blogs
comments
> db.comments.find()
{ "_id" : ObjectId("5dc6ec61bc4ff7077cd58654"), "__v" : 0 }
{ "_id" : ObjectId("5dc6eca7bc4ff7077cd58655"), "__v" : 0 }
{ "_id" : ObjectId("5dc6ecccbc4ff7077cd58656"), "__v" : 0 }
{ "_id" : ObjectId("5dc6ed13bc4ff7077cd58657"), "__v" : 0 }
{ "_id" : ObjectId("5dc6ed36bc4ff7077cd58658"), "__v" : 0 }
{ "_id" : ObjectId("5dc6eeec1d67210792743e67"), "content" : "yoyo", "author" : "yoyo", "__v" : 0 }
{ "_id" : ObjectId("5dc6ef6f6d43b707a11d48a3"), "content" : "hihi", "author" : "hihi", "__v" : 0 }
{ "_id" : ObjectId("5dc6fb906d43b707a11d48a4"), "content" : "yoyoyoy", "author" : "yoyoyoy", "__v" : 0 }
> db.blogs.find()
{ "_id" : ObjectId("5dc6e6dd253599042ef2a2c5"), "comments" : [ ObjectId("5dc6e6f7253599042ef2a2c6"), ObjectId("5dc6ec61bc4ff7077cd58654"), ObjectId("
5dc6eca7bc4ff7077cd58655"), ObjectId("5dc6ecccbc4ff7077cd58656"), ObjectId("5dc6ed13bc4ff7077cd58657"), ObjectId("5dc6ed36bc4ff7077cd58658"), ObjectI
d("5dc6eeec1d67210792743e67") ], "title" : "this is a test post", "image" : "", "body" : "this is a test post", "created" : ISODate("2019-11-09T16:18
:37.394Z"), "__v" : 9, "comment" : [ ObjectId("5dc6ef6f6d43b707a11d48a3"), ObjectId("5dc6fb906d43b707a11d48a4") ] }
>

1 Ответ

1 голос
/ 10 ноября 2019

произошла очень глупая ошибка ... в blogSchema вместо "href" должен использоваться "ref"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...