显示像facebook一样的评论

时间:2014-09-14 18:03:47

标签: express

我有下一个架构:

var eventSchema = mongoose.Schema({
    title: 'string',
    propietary_id: 'String',
    comments : [{
        text: 'string',
        user: { type : mongoose.Schema.Types.ObjectId, ref : 'users' },
        createdAt: {type: Date, default: Date.now }  
    }]
});

我的疑问:

Event.find().populate('comments.user').exec(function(err, doc){
   console.log(err);
   console.log(doc);
});

它可能的返回对象包含事件信息,2条评论和评论总数(如facebook)?

1 个答案:

答案 0 :(得分:0)

我会这样做:

var NBR_OF_COMMENTS = 2;
Event.find().populate('comments.user').exec(function(err, event){
    var comments = event.comments;
    var totalNbrOfComments = comments.length;
    comments.splice(NBR_OF_COMMENTS, totalNbrOfComments - NBR_OF_COMMENTS);
    event.comments = {
        count: comments.length,
        total: totalNbrOfComments,
        items: comments,
    };
    res.json(event);
});

例如,这应该返回以下内容:

{
    title: 'test',
    property_id: '123',
    comments: {
        count: 2,
        total: 5,
        items: [
            {
                text: 'comment 1',
                ...
            },
            {
                text: 'comment 2',
                ...
            },
        ],
    }
}