У меня есть объединенная коллекция в Backbone, которая содержит фотографии и альбомы.
Чтобы отличить их, я добавил поле type
, которое либо photo
, либо 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)
Теперь я обнаружил странную ошибку, когда добавление фотографии и альбома с тем же идентификатором (пусть 2
) приводит к слиянию.
Я проследил это до этих LOC в исходном коде. Кажется, что он отменяется без создания вилки самой Базы. Я пробовал, но он также не прошел 35 тестов.
Я думал о 4 разных способах этого, я не знаю, какой из них лучше:
- Я могу добавить префикс к id. Скажем,
photo_2
. Это приводит к изменению бэкэнд, а также к некоторым изменениям в интерфейсе, чтобы не попасть на сервер с/photos/photo_2
- Я мог бы использовать Backbone и изменить эти LOC.
- Я мог бы создать две отдельные коллекции, но должен иметь дело с слиянием и сортировкой в представлении (что влияет на производительность клиентов и требует перезаписи бэкэнд).
- Я мог бы начать с идентификатора фотографии, скажем
1000000
. Это чрезвычайно снизило бы вероятность того, что данный пользователь, загрузивший фотографию с данным ID, также создал альбом с тем же идентификатором.