express - MongoDB, 레코드를 업데이트할 때 값이 이미 존재하는지 확인하는 방법
淡淡烟草味
淡淡烟草味 2017-05-02 09:22:58
0
3
693

시나리오 설명
레코드를 업데이트해야 하는 경우 먼저 해당 레코드의 이름이 集合Collection에 이미 있는지 확인하세요(자체 제외).

논리적 방향
1단계: 집합에서 자신 찾기
2단계: 이름에 따라 집합에서 자신 찾기
3단계: Step 1的_id 및 <🎜 판단 > 일치 여부Step 2的_id4단계: 두 개의 _id가 일치하지 않으면 "이름이 이미 존재합니다"라는 메시지가 표시됩니다. 그렇지 않으면 레코드 업데이트를 완료하세요

지금 직면한 문제는

Step 1的_id이 일치하지 않는다는 것입니다. Step 2的_id

내 코드 첨부

으아아아

내 생각이 잘못된 것일 수도 있고, 코드에 문제가 있는 것일 수도 있습니다. 전문가에게 조언을 구해야 할 것 같습니다...

淡淡烟草味
淡淡烟草味

모든 응답(3)
世界只因有你

당신의 코드를 정리하겠습니다. 솔직히 당신의 코딩 스타일은 별로 마음에 들지 않습니다. 온갖 불필요한 변수 선언으로 인해 코드 표현이 좋지 않기 때문입니다

먼저 req.body를 사용하므로 express를 사용한다고 가정합니다

으아악

즉, 게시물 요청에 두 개의 값이 전달됩니다. 하나는 _id이고 다른 하나는 이름입니다. 두 값을 사용하여 각각 데이터베이스를 검색하므로 두 개의 검색 결과( 두 개의 문서), 그리고 _id 검색을 통해 얻은 문서와 이름으로 검색한 문서가 동일한지 비교하려고 합니다(물론 _id를 비교하는 것은 동일한 문서인지 비교하는 것입니다)

귀하가 제공한 조건을 토대로 먼저 귀하가 제공한 req.body의 _id와 이름이 서로 다른 두 문서에서 나온 것인지 추측했습니다. 아니면 데이터베이스에 동일한 이름을 가진 두 개의 문서가 있어서 이름 검색을 통해 얻은 문서와 ID 검색을 통해 얻은 문서가 동일하지 않을 수도 있습니다.

최종 console.log 전에 docById 및 docByName을 인쇄하고 몽구스 구성표를 게시하여 살펴볼 수 있습니다. 이렇게 하면 최소한 어떤 종류의 데이터베이스를 검색하고 있는지 알 수 있습니다.

滿天的星座

으아악

이것은 하나의 레코드만 반환하는 findOne을 사용합니다. 아마도 라이브러리에 동일한 이름을 가진 값이 여러 개 있고, 가져온 값이 원하는 값과 다를 수 있습니다.

刘奇

방법을 찾았습니다. String()을 사용하여 1단계에서 얻은 _id를 변환합니다.

전체 코드

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿