2017-09-05 1 views
2

MongoDB에 문제가 있습니다. 나는 같은 것을 할 때 : 나는 클립 보드와 같은 모든 변수에 붙여 넣기를 복사 할 때Nodejs Mongo 결과가 복사 결과와 동일하지 않습니다.

[{ 
_id: someId 
name: someName 
surname: someSurname 
}] 

:

User.find({}, (err, result) => { }) 

을 내가 좋아하는 뭔가를 얻을

let a = [{ 
"_id": "someId" 
"name": "someName" 
"surname": "someSurname" 
}] 

그리고 있는지 확인 (a === result), 나는 거짓과 그것의 동일하지 않습니다. 내 질문은 왜 고 그것을 수정하는 방법 "" "a"

+2

json 개체를 비교하는 방식이 올바르지 않습니다. Check this https://stackoverflow.com/questions/4465244/compare-2-json-objects –

+0

@MukeshSharma 어딘가에 복사해야합니까? –

+0

당신은 또한'a._id'가 문자열이고'result [0] ._ id'가 _ObjectId_ – kiro112

답변

0

같은 응답으로, 당신은 올바르게 동등한 연산자를 사용하지 않는 변경해야합니다.

===을 사용할 때 개체 자체가 동일한 참조를 가리키는 지 테스트합니다 (이는 분명히 다릅니다).

두 개의 배열 (특수 속성이있는 객체이기도 함)이 동일한 지 테스트하려는 것처럼 보입니다. 이 경우 간단한 평등을 사용하면 절대로 작동하지 않습니다. 배열의 모든 객체를 반복해야하고 각 객체에 대해 모든 키를 반복하고 다른 배열의 대응 ​​노드와 비슷한지 확인해야합니다.

this 답변을 참조하여 두 개체를 비교할 수있는 방법을 확인할 수 있습니다. 최종 결과는 다음과 같아야합니다

// assuming you use ES6 
let array1 = [{ a: 1, b: 2 }]; 
let array2 = [{ a: 1, b: 2 }]; 

// check if the arrays have different length  
if (array1.length !== array2.length) { 
    // definitely not equal 
    return false; 
}} 

let n = array1.length; 

for (let i = 0; i < n; i++) { 
    let res = deepObjCmp(array1[i], array2[i]); 
    if (!res) { 
     // at least one object is different 
     return false; 
    } 
} 
0

두 개체를 비교하는 방법을 JSON으로 변환하고 결과 문자열이 링크에서 가져온 동일한

function jsonEqual(a,b) { 
    return JSON.stringify(a) === JSON.stringify(b); 
} 
jsonEqual(user1, user2) // true in all cases 

샘플 있는지 확인하는 것입니다 http://www.mattzeunert.com/2016/01/28/javascript-deep-equal.html 그냥 참조 너는 그것을 이해할 것이다.

0

_id, name & surname 속성을 비교하려면 각 속성을 수동으로 확인하면됩니다. 이 방법은 아마도 당신의 필요에 가장 효과적인 방법 일 것입니다.

function isEqual(documentOne, documentTwo) { 
    return (documentOne._id.toString() === documentTwo._id.toString() && documentOne.name === documentTwo.name && documentOne.surname === documentTwo.surname); 
} 

isEqual(a[0], result[0]); 
관련 문제