如何跟踪使用Node.js和Mongodb观看的视频

时间:2017-03-30 17:48:38

标签: node.js mongodb

我正在构建一个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而使用键:值对返回的内容。如果这是有道理的,请告诉我。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我最终只是在User模型中使用了一个数组,如下所示:

vid_inprogress: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Video'
},
vid_completed: [{ type : mongoose.Schema.Types.ObjectId, ref: 'Video' }]

我只需在前端添加watched: true即可。如果你有更好的方法,请告诉我。我很想听听。