Nodejs Mongodb查询

时间:2018-01-09 08:28:04

标签: node.js mongodb express

我有一个电影网站。在观看视频中,我想显示以下所有数据。

  1. 在视频收藏中,我希望得到
    • 所有字段按ID。(有外键stars_ID)
    • 本周最受欢迎的十大观看视频。
    • 同一个明星的20部电影
    • 同一类别的20部电影。
  2. 在明星系列中,我想获得[name,profile_image]
  3. 在评论集合中,我希望获得parent_id = video_id
  4. 的所有字段

    我目前的解决方案:

    我得到所有数据

    // watch
    app.get('/watch/:id', function(req, res, next){
        var id = req.params.id;
        videoMdl.getvideoById(req.params.id, function(err, data){
            if(err) throw err;
            res.render('video/views/watch',{
                title:data.title, 
                data:data,
            })
    
        })
    
    })
    
    // get video by id
    module.exports.getvideoById = function(id, callback){
        videosModel.findById(id, callback);
    }
    

    正如您所看到的,我只能通过ID从视频集合中获取数据。 为了获得其他数据我使用Angularjs,这对SEO有害,这就是为什么我不喜欢并寻找更好的解决方案。

    由于

1 个答案:

答案 0 :(得分:0)

我明白了

// get cast
    function getTopCast(req, res, next){
        castMdl.findTop({}, function(err, data){
            if(err) throw err;
            req.topCast = data;
            next();
        })
    }
    // get Video id
    function getVideoId(req, res, next){
    var id = req.params.id;
            videoMdl.getvideoById(id, function(err, data){
                if(err) throw err;
                req.video = data;
                next();
            })


    }
    // render
    function renderData(req, res, next){
        res.json({video:req.video, cast: req.topCast});
    }
    app.get('/xem/:id', getTopCast,getVideoId, renderData);