ID 맵에 사용 된 도메인 개체가 있습니다 (키는 개체의 Id
속성 임).ID 맵의 Null 키
의사 코드 : 새로운 객체의 경우
domainObj.bind('saved', function() {
map[domainObj.Id] = 'new foo!'
})
Id
필드가 비어과 때까지 채워되지 않습니다 :이 데이터베이스에 저장되어있는 경우
map = new Mapping();
map[domainObj.Id] = 'foo';
내가 말해 줄 수있는 개체를 관찰 데이터베이스에 저장됩니다.
그리고 내 문제가 있습니다. 새 개체의 경우 저장 후 개체의 ID가 변경 되었기 때문에 조회 "map[domainObj.Id]
"이 실패합니다!
이와 같이 ID 맵에서 개체를 사용하는 가장 좋은 방법은 무엇입니까?
제약 :
- 나는 매핑 키 등의 개체를 허용하지 않는 언어를 사용하고 [자바 스크립트] 새를 저장할 때
Id
필드 해야 서버에서 생성 할 수 - 객체
업데이트
의견에 감사드립니다. 엔티티와 같은 방식으로 값 객체를 매핑하고 싶습니다. 값 객체가 저장되지 않았기 때문에 내 응용 프로그램에 매핑 할 값이 없다는 것을 의미하지는 않습니다. 나는 실제로 신원 맵이 무엇인지 잘못 이해하고있다. (패턴 정의를 다시 읽은 후에, 나는 진정으로 사용하지 않는다).
Igor의 답변에서 알 수 있듯이 해결책은 각 인스턴스마다 인스턴스화시 임의의 ID가 할당됩니다. 객체가 존재하는 맥락의 수명 동안 독특하고 불변이며 변화가 없다. 그것은 db와 새로운 인스턴스화의 두 엔티티 모두를위한 것입니다. 엔티티의 조정은 객체의 실제 ID와 일치하도록 설정된다는 것입니다. 이것은 디버깅을 좀 더 쉽게 만듭니다. 이것은 매핑에서 키로 사용하는 값입니다.
에 대한 이유는 identitymap에 과도 개체를 추가 하시겠습니까보기? – Paco
@Paco : 아이덴티티 맵이 아닙니다. 아이덴티티 맵의 유즈 케이스를 오해했습니다. 나는 아이덴티티 맵을 사용하고 있다고 생각하는이 사람들에게 질문 문구를 남겨 두었다. http://stackoverflow.com/questions/804041/null-key-in-identity-map/804096#804096 – JPot