
211
13
장
-
지속성
뷰 콘텍스트를 처리한 방법이 낯설게 느껴집니다. 데이터베이스에서 반환한 상품을 거의 완전
히 같은 객체에 매핑한 이유가 뭘까요? 한 가지 이유는, 핸들바 뷰에서 표현식에 들어 있는 함
수의 반환값을 사용할 방법이 없기 때문입니다. 따라서 가격을 형식에 맞춰 표시하려면 먼저
문자열 프로퍼티로 변환해야 합니다. 이렇게 할 수도 있습니다.
var context
=
{
vacations
:
products
.
map
(
function
(
vacations
){
vacation
.
price
=
vacation
.
getDisplayPrice
();
return vacation
;
});
};
이렇게 하면 확실히 코드가 좀 짧아지긴 하지만, 필자의 경험으로는 데이터베이스 객체를 매
핑하지 않고 직접 뷰에 넘기는 건 좋지 않습니다. 직접 넘기면 뷰에 필요 없는 프로퍼티가 많이
넘어가게 되고, 개중에는 형식이 호환되지 않는 프로퍼티도 있을 겁니다. 아직은 예제가 매우
단순하지만, 더 복잡해지게 되면 뷰에 넘어갈 데이터를 더 많이 수정하고 싶을 겁니다. 데이터
베이스 객체를 직접 넘기면 은밀한 정보나 웹사이트 보안을 약하게 할 정보가 노출될 수도 있
습니다. 따라서 필자는 데이터베이스에서 반환한 데이터를 매핑해 뷰에 필요한 것만 넘기길 권
합니다. 그 과정에서
price
에