【一起学node.js (九)】实现评论功能
发布于 2年前 作者 nswbmw 2526 次浏览 最后一次编辑是 1年前
10 回复

这个地方错了,应该是:

{
"user":"...",
"time":{
    ...
},
"title":"...",
"post":"...",
"comments":[
    {
    "name":"lisi",
    "email":"...",
    "website":"...",
    “time”:”...”,
    "content":"..."
    },
    {
    "name":"wangwu",
    "email":"...",
    "website":"...",
    “time”:”...”,
    "content":"..."
    }
    ......
],
"_id":"..."
}

楼主很细心,不错~~支持一下

修复一个bug,在comment.js中我想先find那篇文章,获取id,然后通过id来update一个comment,这写错了:

query_id.id = doc._id;

最起码也应该是

query_id._id = doc._id;

。。。但我试了试貌似也不行,所我查了查node-mongodb-bative中正好有一个findAndModify。。它的作用就是find+update的合体,所以我们直接用这个findAndModify操作就可以了。 http://mongodb.github.io/node-mongodb-native/api-generated/collection.html#findandmodify comment.js改成以下内容:

var mongodb = require('./db');

function Comment(user, day, title, comment) {
    this.user = user;
    this.day = day;
    this.title = title;
    this.comment = comment;
}

module.exports = Comment;

Comment.prototype.save = function(callback) {
var user = this.user,
    day = this.day,
    title = this.title,
    comment = this.comment;
mongodb.open(function (err, db) {
    if (err) {
        return callback(err);
    }

    db.collection('posts', function (err, collection) {
        if (err) {
            mongodb.close();
            return callback(err);
        }

        collection.findAndModify({"user":user,"time.day":day,"title":title}
        , [['time',-1]]
        , {$push:{"comments":comment}}
        , {new: true}
        , function (err,comment) {
            mongodb.close();
            callback(err,comment);
        });   
    });
});
};

楼主很有耐心讲解NJ的博客教程,决定好好跟随,准备交作业。

楼主,这里不行啊,,,,是不是没存进去?

解决了,post.js还要改下: function Post(username,title,post,time,comments){

this.comments=comments;

var post=new Post(doc.user,doc.title,doc.post,doc.time,doc.comments);

lz有个问题当有很多文章,从主页点进一篇文章的时候,留言。留言的内容不会在这篇文章上,会跑到最后一篇文章中。

嗯,这是设计上的失误。。。当初没有根据 _id 进行查询,而是根据 用户名/时间/文章名 进行查询的,所以同一天发表相同标题的两篇及以上的文章就出现问题了。。明白就好。。

像CNode这样的嵌套评论 怎么做比较好呢?

回到顶部