pat
그는 물었다 8 лет назад
174

몽구스 _id 및 문자열 비교

I have a node. js 스틱 it 를 당기는 일부 데이터 및 응용 프로그램 객체 (예:

var results = new Object();

User.findOne(query, function(err, u) {
    results.userId = u._id;
}

그럼 저장된 id 를 기반으로 한 때 나는한다 if / 비교가 안 진실:

if (results.userId == AnotherMongoDocument._id) {
    console.log('This is never true');
}

39 의 때, 그들은 그렇게 콘솔드로그 두 id& 정확히 일치하는:

User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002

나는 이건 함정이거나 가정할 때, 데이터 형식 문제가 없으나 I& 레술츠리우스 리드 변환할지 알 수 없는 # 39 m 위의 기술입니까 flashcopy 만들어지는 데이터 형식 비교 및 아웃소싱 (lc-fc 구글) 내 뇌 못했음을 바랍니다.

답변 6 개

몽구스 soundmixer. 몽고 db 넷윈을 드라이버구성 사용하는 사용자 정의 objectid 유형:. Objectid 비교할 수 있습니다 () '와' 그레퀄스 메서드입니다. 예를 들어, '를 레술츠.저리d. 퀄스 (AnotherMongoDocument._id)'. Objectid 유형 또한 원할 경우 'toString ()' 를 저장할 수 있는 방법을 스트린기프리드 버전의 ObjectID JSON format, 또는 쿠키.

Objectid 자오비에스티드 필요한 (mongodb&quot ";) 를 사용하는 경우 '=' (单捞磐啊 이 몽고 db 넷윈을 라이브러리) '은' 와 '레술츠리우스 리드 instanceof objectid 유효함 식별자입니다 레술츠리우스 리드 경우 확인할 수 있습니다'.

상술합니다.

JoshuaDavid
그는 3 года назад 댓글을 달았습니다
3

'몽구스' you 're 이미 사용하고 있는 경우, you& # 39 (& # 39, mongoose& # 39;) 그냥 할 수 있도록 모든 추가 종속물과의 나열할 수 없는' don& 지몬고드로브제스티드 # 39.

objectid 가 객체에는 '그냥' = 're 비교, 네가 만일 you& # 39 로 그들을 비교하십시오 그들의 참조입니다. 값을 비교하고 싶으면 '' 오브제크티d. 퀄스 사용해야 하는 방법:

if (results.userId.equals(AnotherMongoDocument._id)) {
    ...
}

id 를 문자열 (toString () 메서드를 사용하여) 는 객체 변환 작업을 수행할.

답변 정말 뭘 할 수 있는 이 수락됨 제한값 코드에. 예를 들어, 검색 수 없을 것으로 보인다 '는' 객체에는 배열입니다 id 를 사용하여 메서드입니다. 대신 더 만들 것이라고 항상 캐스트 문자열 및 비교하십시오 감지에서 시동키는.

39 의 경우, 예를 들어 here& 오토메이티드 사용해야 할 경우 indexOf () '을' 내 특정 id 를 solaris. '확인란 배열입니다 참조입니다' 은 '은' 섬모델 쿼리하지 쿼리하지 틀렸다니까 실행, solaris. 몽고 모델을 찾고, 그리고 solaris. 'id' 는 필드 레술츠자이드리스트 찾고자 하는 사용자의 객체에는 id 를.

query.exec(function(err,results){
   var array = results.idList.map(function(v){ return v.toString(); });
   var exists = array.indexOf(someModel._id.toString()) >= 0;
   console.log(exists);
});

Zlatko
그는 4 года назад 댓글을 달았습니다
1

또는 한 줄 광고문: '그럼 존재 = 레술츠자이드리스트롬필터 (발 = &gt. 발스트로스링 () = 티시스테스트린지피디드위렐로레이퍼) 트렌크스? 진실: 거짓값 '

r3wt
그는 4 года назад 댓글을 달았습니다
4

39 m not a big fan of the new 구문, @zlatko i& 아니라 각 자신의.

axanpi
그는 2 года назад 댓글을 달았습니다
2

@Zlatko

const 존재하는 '= 레술츠자이드리스테이섬 (발 = &gt. 발스트로스링 () = 티시스테스트린지피디드위렐로레이퍼) '

또는

const 존재하는 '= 레술츠자이드리스테이섬 (발 = &gt. 발리에퀄스 (someModel._id) '

r3wt
그는 2 года назад 댓글을 달았습니다
0

이러한 모든 년 뒤 @zlatko 배리랑. 난 지금 제 포지셔닝하십시오 버전이. 만약 내가 내 마음을 추가하여 오토메이티드 적절한 속성?

Zlatko
그는 2 года назад 댓글을 달았습니다
1

가격이 진행율:) 물론, 당시 주로 it& 오토메이티드 사용할 수 있습니다 # 39 의 경우 대체 또는 도움말에서는 제공할 수 있습니다.

내가 찾은 따르면, 위의 세 가지 방법을 통해 문제를 해결합니다.

anothermongodocument._id.tostring () '' 1. 제슨.스트린그리피 (AnotherMongoDocument._id) '' 2. 레술츠.저리d. 퀄스 (AnotherMongoDocument._id) '' 3.

난 내가 그냥 똑같은 문제에 직면한 문제를 해결할 수 있도록 ' ()' 으로 제슨.스트린그리피 준수하십시오 -

if (JSON.stringify(results.userId) === JSON.stringify(AnotherMongoDocument._id)) {
        console.log('This is never true');
}