2014-12-31 2 views
-3

서버 측 기능을 위해 nodejs 및 mongo db를 사용하는 모바일 응용 프로그램에서 작업하고 있습니다.노드 j에서 작동하지 않는 조건이있는 경우

모든 요청에 ​​보낼 사용자 지정 헤더를 구현했으며 헤더 값을 확인하는 다음 기능이 있습니다.

다음
/** 
    * 
    * Check Request headers 
    * @param : headers 
    * @returns : boolean 
    * 
    * */ 
    function checkHeaders(data) { 
     var customHeader = JSON.stringify(data.appsecret).valueOf().trim(); 
     var contentTypeHeader = JSON.stringify(data["content-type"]).valueOf().trim(); 
     if (contentTypeHeader === "application/x-www-form-urlencoded" && customHeader === "xxxxx") { 
      return 1; 
     } else { 
      return 0; 
     } 
    } 

난 항상 응답으로 0을 얻을 내가 3 개 변수의 값을 검사 한
1. 데이터
2. customHeader,
3. contentTypeHeader
을 즉 : 여기

내 코드입니다 올바른 것으로 수신되었습니다. 하지만 if 조건의 값은 일치하지 않으며 항상 결과로 "0"을 얻습니다.

어떤 제안이라도 도움이 될 것입니다.

미리 감사드립니다.

+0

검사 : 여기


좋은 코드를 작동 업데이트 된 코드입니다. –

+0

문자열입니다. JSON.stringify() – Todd

+0

@Todd : 예, 해당 변수의 모든 값을 얻었지만 다른 문자열과 값을 비교할 수 없습니다. – Neelanshu

답변

0

나는 해결책을 찾아 냈다. 데이터 매개 변수 자체는 객체이며 stringify 연산이 필요하지 않습니다. `customHeader`와`contentTypeHeader`의 유형이며, 또한 모두의 값을 확인 무엇

/** 
    * 
    * Check Request headers 
    * @param : headers 
    * @returns : boolean 
    * 
    * */ 
    function checkHeaders(data) { 
    if (data['content-type'] === "application/x-www-form-urlencoded" && data.appsecret === "xxxxx") { 
      return 1; 
     } else { 
      return 0; 
     } 
    } 
-1

편집

좋아, 그래서 진짜 문제는 당신이 당신의 조건에있는 문자열과 일치하지 않는 것 문자열의 프리미티브 값을 반환 .valueOfJSON.stringify을 사용하고 있다는 것입니다; str.valueOf()을 제거하고 필요한 경우 .trim()을 그대로 사용하십시오.

이를 시도하고 ===가 있었다 == 통지 : 대신의

return contentTypeHeader == "application/x-www-form-urlencoded" && customHeader == "xxxxx"; 

을 :

if (contentTypeHeader === "application/x-www-form-urlencoded" && customHeader === "xxxxx") { 
     return 1; 
    } else { 
     return 0; 
    } 
+0

왜 downvote, 형제? – Todd

+0

위의 코드를 시도했지만 여전히 결과는 같습니다. – Neelanshu

+0

투표하지 않았습니다. – Neelanshu

관련 문제