2014-12-03 2 views
0
while(parentId){ 
    ancestors.push(parentId); 
    parent = Comments.findOne(parentId); 
    if(typeof parent.parentCommentId === "undefined"){ 
     break; 
    } else { 
     parentId = parent.parentCommentId; 
     console.log(parentId); 
    } 
} 

이 코드가 배열의 모든 parentCommentId를 맨 위로 밀어 올리려고합니다. 그러나 맨 위 주석문에는 필드 parentCommentId가 없습니다.findOne 결과에 속성이 있는지 확인하십시오.

그리고 콘솔에서이 오류가 나는 속성을 확인할 수있는 방법 Cannot read property 'parentCommentId' of undefined {stack: (...), message: "Cannot read property 'parentCommentId' of undefined"} 대해서 typeof 및 hasOwnProperty 문제가 해결되지는

+0

응답을 얻으려면 콜백 함수를 사용하십시오. – BatScream

답변

0

가 정의되지 않은

의 특성 'parentCommentId'을 읽을 수 없습니다이 의미 액세스하려는 속성을 소유 한 객체는 정의되지 않으므로 문제가 속성과 다릅니다.

귀하의 경우 Comments.findOne은 해당 ID로 아무 것도 찾지 못했기 때문에 parent 개체는 정의되지 않았습니다. 그냥 알다시피

, 객체의 속성의 존재를 확인하는 또 다른 방법은 다음과 같습니다 주어진 ID 아무런 결과가없는 경우

if (parent.parentCommentId) { 
} 
0

Comments.findOne (parentId)가 정의되지 않은 반환 할 수 있습니다.

parent = Comments.findOne(parentId); //parent can be undefined 
if (typeof parent === "undefined"){ 
    //parent is undefined 
} else { 
    //parent found 
} 

그래서 대답은 :

parent = Comments.findOne(parentId); //parent can be undefined 
if (!parent) { 
    //parent is undefined 
} else { 
    //parent found 
} 

위의 코드와 동일합니다 당신은 부모가 정의되어 있는지 확인해야합니다. 그렇다면 속성에 액세스 할 수 있습니다.

관련 문제