2013-07-25 2 views
3

전자 메일로 데이터베이스에서 사용자를 조회하고 ID, 전자 메일 및 해시 암호가 포함 된 구조체를 반환하는 함수가 있습니다. 하지만 ColdFusion에 null/nil/none 유형이 없기 때문에 사용자가 존재하지 않으면 반환 할 항목을 파악할 수 없습니다.ColdFusion에서 'nil'값을 반환하는 방법

내 최초의 솔루션은 단지 사용자가 존재하는지 if(user == false)를 사용 false을 반환했지만 모두 ==is와 ColdFusion은 부울에 유효한 사용자 구조체로 변환하려고 할 때 할 수있는 '오류가 발생합니다 티.

내 두 번째 해결 방법은 값이없는 return; 일 뿐이므로 내 수표는 if(isDefined("foo"))이됩니다. 변수 이름이 이제는 문자열에 있기 때문에 꽤 추한 것처럼 보입니다 ...

ColdFusion에서 "아무것도 찾을 수 없음"값을 반환하는 깨끗한 방법이 있습니까?

+2

하지 않습니다 당신이 한 반환 무엇을 중요하지 않지만, 가장 가능성이 있기 때문에

트릭은 반환 처리하는 방법에 UserNotFound 예외를 던지거나 사용자 ID가 -1 인 구조체를 반환 할 수 있습니다. –

+2

나는 @SeanMcSomething과 함께 가고 싶다. 사용자를 다시 얻으 려한다면 예외를 던지는 것이 꽤 합리적이며 호출 코드를 멋지게 구조화 할 수있다. – barnyr

+1

다른 해결책은 빈 구조를 반환하는 것입니다. –

답변

1

CF는 빈 '' 또는 false 잘 작동 반환

<cffunction name="getUser"> 
    <cfargument name="userID"> 
    <cfquery name="qUser"> 
    SELECT * FROM users where userID = <cfqueryparam value="#userID#"> 
    </cfquery> 
    <cfif qUser.recordCount> 
    <cfreturn {name=qUser.name}> 
    </cfif> 
</cffunction> 

<cfset var user = getUser(1)> 
<cfif isNull(user)> 
    <!-- user not found --> 
<cfelse> 
    Welcome #user.name# 
</cfif> 
+0

머리 위로 :하지 마십시오. 리턴 유형을 정의하십시오. 그것을'any'로 유지하십시오. – Henry

1

:, 예컨대을 CF9 이후 isNull() 있습니다. 당신이 if isStruct(result)을 다하겠습니다 당신에게이 언어를 몰라 구조

관련 문제