У меня есть объект домена, используемый в карте идентификации (ключи - это свойство Id
объекта).
псевдокод:
map = new Mapping();
map[domainObj.Id] = 'foo';
Я наблюдаю объект, чтобы сообщить мне, когда он был сохранен в базе данных:
domainObj.bind('saved', function() {
map[domainObj.Id] = 'new foo!'
})
Для новых объектов поле Id
пустое и не заполняется до тех пор, пока не будет сохранено в базе данных.
И в этом заключается моя проблема. В случае новых объектов поиск "map[domainObj.Id]
" завершается неудачно, поскольку идентификация объекта изменилась после сохранения!
Каков наилучший способ использовать объект на карте идентичности, подобной этой?
Ограничения
- Я использую язык, который не допускает использование объектов в качестве ключей в отображении [JavaScript]
- Поле
Id
должно генерироваться на сервере при сохранении нового объекта
Обновление
Спасибо за отзыв. Я действительно хотел бы, чтобы объекты-значения отображались так же, как и сущности: просто потому, что объект-значение не был сохранен, не означает, что у него нет значения, которое можно сопоставить для моего приложения. На самом деле я неправильно понимаю, что такое карта идентификации (которую, после перечитывания определения шаблона, я на самом деле не использую).
Решение, которое я придумал, в значительной степени прямо из ответа Игоря: каждый объект получает случайный идентификатор, назначенный ему при создании экземпляра. Он уникален, неизменен и неизменен в течение всего контекста, в котором живет объект. Он существует как для сущностей из БД, так и для новых экземпляров. Подстройка для сущностей заключается в том, что она соответствует реальной идентичности объекта. Это делает отладку немного проще. Это значение, которое я использую в качестве ключа в сопоставлении.