繁体   English   中英

筛选流星FindOne的退货?

[英]Filter Return of Meteor FindOne?

我将如何过滤Iron Router中FindOne函数的返回? 我认为聚合是不可能的,但是我可能是错的。 我尝试了许多无效的方法。 我想返回ID,名称和它在其中找到匹配的season_number的季节对象。

我的数据库设置如下:

  • _ID
  • 名称
  • 季节(数组)

    • 季节(对象)

      • season_number

      • 情节(数组)

        • 情节(对象)

          • Episode_title
          • Episode_number

这是我的铁路由器代码,当前仅在运行findOne函数。

 Router.route('/show/:_id/season/:season_number', { name: 'viewSeasonPage', // This links to the template data: function() { return Tv.findOne({_id:"KQBXq4nri7zssDna2", "seasons.season_number": 2}))} }); 

    Router.route('/show/:_id/season/:season_number', {
      name: 'viewSeasonPage', // This links to the template
      data: function() { 
               let tv = Tv.findOne({_id:"KQBXq4nri7zssDna2", "seasons.season_number": 2});
               if (tv && tv.seasons) { return tv.seasons.find(function(season) { return season.season_number == 2; })
            }
    }); 

您需要过滤结果以创建要返回的数据对象以及所需的信息。 如果您的搜索找不到任何东西,则您的数据为空对象。

Router.route('/show/:_id/season/:season_number', {
    name: 'viewSeasonPage',
    data: function() {
        // Find your object
        var tv = Tv.findOne({
            _id: this.params._id,
            seasons: {
                $elemMatch: {
                    season_number: this.params.season_number
                }
            }
        });
        // Fill data by filtering the correct season
        var data = {};
        if (tv) {
            data._id = tv._id;   // 1. ID
            data.name = tv.name; // 2. NAME
            // Find correct season in array
            var season;
            for (var i = tv.seasons.length - 1; i >= 0; i--) {
                season = tv.seasons[i];
                if (season.season_number == this.params.season_number) {
                    data.season = season; // 3. SEASON
                }
            };
        }
        return data;
    }
});

我知道要编写很多代码,但这是为了了解想法和过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM