当用户请求某个特定帖子(每个用户仅创建一个视图)时,如何计算该帖子在数据库中的观看次数?
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
});
每次我请求查看特定新闻时,每个用户只能进行一次查看,这意味着如果用户查看该新闻几次才算一次,我想将该数字存储到我的数据库中,并且当新用户的要求增加时。
答案 0 :(得分:0)
只需在您的新闻模型上添加一个新字段,例如,viewedBy应该是一个对象数组,并且每个对象都将是对用户的引用,如下所示:
viewedBy:[{Schema.Types.ObjectId, ref:"User"}]
每次用户查看新闻时,您都需要将此用户添加到上面刚刚创建的新闻查看字段中。这就是逻辑db将需要知道针对该特定用户看到了特定新闻,然后视图的数量将只是viewedBy数组的长度。 希望它能有所帮助。