我正在构建一个MEAN堆栈视频应用程序(我对Node和Mongodb来说很新),我需要一种方法来跟踪观看的视频。我该怎么做呢?
我原以为我可以在用户集合中有一系列ID引用视频,但我希望能够返回具有watched: true
键值对的视频依赖于发出请求的用户。如果这是一个很好的方法,我如何返回依赖于另一个集合中的另一个文档的键值对?
用户模型:
let UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
minlength: 1,
trim: true,
unique: true,
validate: {
validator: VALUE => validator.isEmail(VALUE),
message: '{VALUE} is not a valid email'
}
},
password: {
type: String,
required: true,
minlength: 6
},
admin: {
type: Boolean,
default: false
},
vid_inprogress: {
type: mongoose.Schema.Types.ObjectId
},
vid_completed: [{ type : mongoose.Schema.Types.ObjectId, ref: 'Attachment' }],
tokens: [{
access: {
type: String,
required: true
},
token: {
type: String,
required: true
}
}]
});
视频模型:
var Video = mongoose.model('Video', {
url: {
type: String,
required: true,
minlength: 1,
trim: true
},
title: {
type: String,
required: true,
default: '',
trim: true
},
description: {
type: String,
default: '',
trim: true
},
img: {
type: String,
default: '',
trim: true
},
attachments: [{ type : mongoose.Schema.Types.ObjectId, ref: 'Attachment' }]
});
用户模型上的 vid_completed
是我想跟踪已观看的视频ID的地方。视频模型是根据是否在用户vid_completed
数组中找到视频ID而使用键:值对返回的内容。如果这是有道理的,请告诉我。提前谢谢!
答案 0 :(得分:0)
我最终只是在User模型中使用了一个数组,如下所示:
vid_inprogress: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Video'
},
vid_completed: [{ type : mongoose.Schema.Types.ObjectId, ref: 'Video' }]
我只需在前端添加watched: true
即可。如果你有更好的方法,请告诉我。我很想听听。