每当我们向db中的特定ID发出请求时,如何计算视图次数?

时间:2018-12-25 10:42:46

标签: node.js database mongodb

当用户请求某个特定帖子(每个用户仅创建一个视图)时,如何计算该帖子在数据库中的观看次数?

const CommenTs = new Schema({
    iduser: {
        type: String,

      },
    picuser: {
         type: String,
      },
    description:{
        type: String,
        maxlength:[150,'The Username must be maximum 150 charecters'],

    },
    likescount:{
        type:Number

    },
    linkvoice:{
        type:Schema.Types.Mixed

    }
});

const NEWSModel = new Schema({
viewsCount:{
    type:Number

},
publishedBy:{
    type:String,
    required:true,

},
PublisherPic:{
    type: String,

},
PublishedData:{
    type:Date,
    default:Date.now

},
Subject:{
    type:String,
    required:true

},
Description:{
    type:String,
    required:true

},
Pics:{
    type:Array

},
Tags:{
    type:Array

},
LikesCount:{
    type:Number

},
DislikeCount:{
    type:Number

},
CommentsCount:{
    type:Number

},
Comments:CommenTs

});

每次我请求查看特定新闻时,每个用户只能进行一次查看,这意味着如果用户查看该新闻几次才算一次,我想将该数字存储到我的数据库中,并且当新用户的要求增加时。

1 个答案:

答案 0 :(得分:0)

只需在您的新闻模型上添加一个新字段,例如,viewedBy应该是一个对象数组,并且每个对象都将是对用户的引用,如下所示:

viewedBy:[{Schema.Types.ObjectId, ref:"User"}]

每次用户查看新闻时,您都需要将此用户添加到上面刚刚创建的新闻查看字段中。这就是逻辑db将需要知道针对该特定用户看到了特定新闻,然后视图的数量将只是viewedBy数组的长度。 希望它能有所帮助。