我在 Backbone 中有一个合并的集合,其中包含照片和相册。
为了区分它们,我添加了一个字段type
,它是photo
or album
。当我填充集合时,我在Collection#model
方法中创建不同的模型
model: (attrs, options) ->
switch attrs.type
when 'album' then new App.Models.Album(attrs, options)
when 'photo' then new App.Models.Photo(attrs, options)
现在我发现了一个奇怪的错误,其中添加具有相同 ID(假设2
)的照片和相册会导致合并。
我已经在源代码中追踪到这些LOC。如果不创建 Backbone 本身的分支,它似乎是可以撤消的。我试过了,但它也没有通过 35 次测试。
我想到了 4 种不同的方法,我不知道哪种方法更好:
- 我可以为 id 添加前缀。比方说
photo_2
。这会导致后端的更改以及前端的某些更改不会在/photos/photo_2
- 我可以分叉 Backbone 并更改这些LOC。
- 我可以创建两个单独的集合,但必须处理视图中的合并和排序(这会影响客户端性能并需要重写后端)
- 我可以从带照片的身份证开始,比如说
1000000
。这将极大地降低已上传具有给定 ID 的照片的给定用户也创建了具有相同 ID 的相册的可能性。