过滤收集与主干几集?(Filtering a collection vs. several coll

2019-09-17 03:45发布

如果是适当的筛选集合与骨干有几个收藏品?

例如,考虑音乐库的应用程序。 它会显示流派观点和显示所选择的类型的音乐另一种看法。

你愿意做一个巨大的集合与所有的音乐,然后将其过滤或几个小的?

仅具有一个集将允许你通过其他属性过滤功能添加为好,但假设你有吨的音乐:您如何防止加载它的所有应用程序启动时,如果用户如果只将需要1个流派吗?

Answer 1:

我认为,最简单的方法是有一个共同的独特集合,智, fetch一个已经通过从服务器类型数据过滤

// code simplified and no tested
var SongsCollection = Backbone.Collection.extend({
  model: Song,
  url: function() {
    return '/songs/' + this.genre;
  },
  initialize: function( opts ){
    this.genre = opts.genre;
  }
});

var mySongsCollection = new SongsCollection({ genre: "rock" });
mySongsCollection.fetch();

你必须让这个系列从服务器用户随时改变所选择的类型重新获取数据:

mySongsCollection.genre = "punk";
mySongsCollection.fetch();


Answer 2:

它主要是设计的选择,但我的投票将选择宽松反映了数据库中存储的集合的方案。

如果你很可能是在一个SQL数据库中存储的数据,你会比更有可能不具备单独的表songsgenres 。 你可能他们要么通过连接genre_id列在歌曲表,或者(如果歌曲可以有一个以上的流派)在一个单独的条款song_genres连接表。 因此,你可能会想代表在其中的流派和歌曲不同的集合。 在这种情况下, 骨干关系可能帮助他们保持笔直非常有用的工具。

如果你存储在任何一种关系型/键值/文档存储的信息,它可能是有意义的只是流派直接存储的歌曲,并相应地进行筛选。 在这种情况下,你可能最终存储,这样你就可以访问歌曲直接的方式您的文档键/查询(例如,通过songs ),或者通过类型(例如, genre:genre_id/songs )。 如果这是你走的路线,可能更方便简单地创建的歌单巨大集合,并计划设立相应的过滤器的应用程序和数据库环境两者。



文章来源: Filtering a collection vs. several collections in Backbone?
标签: backbone.js