>source

Mongoose를 한동안 사용한 후, 나는 그것을 사용할 때마다ObjectId(클라이언트의 ID 문자열)또는new ObjectId(클라이언트의 ID 문자열), 입력 문자열 Id와 동일하지 않은 새 Id를 얻습니다. 나는 이것이 최근까지 의도된 동작이라고 생각했습니다. 내 설정에서 뭔가 엉망이 된 것 같습니다. 노드 및 Typescript와 함께 Typegoose, Mongoose 및 Mongodb를 사용하고 있습니다.

npm ls mongoose
backend
├─┬ @typegoose/[email protected]
│ └── [email protected] deduped
└─┬ [email protected]
  └─┬ [email protected]
    └── [email protected] deduped
npm ls mongodb
backend
├── [email protected]
└─┬ [email protected]
  └── [email protected] deduped

이것은 내 의존성입니다.

"dependencies": {
        "@typegoose/typegoose": "8.3.0",
        "@types/mongodb": "3.6.11",
        "mongodb": "3.6.11",
        "mongoose": "~5.13.8",
        "mongoose-to-swagger": "^1.3.0",
    },
    "devDependencies": {
        "ts-node": "9.1.1",
        "tsc-alias": "^1.3.9",
        "tsconfig-paths": "^3.11.0",
        "typescript": "4.1.3"
    }
}

그리고 이것은 결과입니다

Input: channelId":"614728ed7f88e836fcc22827","senderId":"61471fdb6cb0b1129b8b7316","contents":""
Output:
{
_id: 6147361e69906069b52ab3d2,
senderId: 6147361e69906069b52ab3d0,
channelId: 6147361e69906069b52ab3d1,
}

이러한 값을 그대로 가져오지만 Mongodb에서 직접 ObjectId를 사용하거나 다른 종속성 등에서 다른 방법을 시도했습니다.

const model= await MessageModel.create({
        senderId:  new mongoose.Types.ObjectId(message.senderId),
        channelId:  new mongoose.Types.ObjectId(message.channelId),
        contents: message.contents,
      });

내 모든 프로젝트에서 이런 일이 발생했습니다. 해결 방법에 대한 의견이 있습니까? deps의 전체 목록

왜 생성자에게 전달되기를 원하십니까? SenderID 및 CannelID의 데이터 유형을 "ObjectID"로 정의하고 MessageModel의 새 문서를 만들 때 "614728ed7F88E836FCC22827"문자열을 전달할 수 있습니다.

Deekshith Hegde2021-09-21 02:18:11

해당 필드가 실제로 "메시지"에 있다고 확신합니까? 설명하는 동작은 ObjectId 생성자에 전달된 값이 정의되지 않은 경우 발생합니다.

Joe2021-09-21 02:18:11

값을 사용하기 직전에 여러 번 인쇄했습니다. 내가 읽은 바에 따르면 버전이 뒤죽박죽이고 정렬되지 않은 경우 유사한 예기치 않은 동작이 발생할 수 있습니다. 그러나 이것은 내 모든 프로젝트에서 이런 일이 발생했다면 이 경우에만 국한되지 않습니다.

Nikola-Milovic2021-09-21 02:18:11

따옴표가 포함되지 않은 출력은 Mongoose가 objectID 값을 표시하는 방법입니다. 입력 값이 실제로 objectID입니까?

Joe2021-09-21 02:18:11
  • 이전 node.js : zsh : 명령을 찾을 수 없습니다 : 정신
  • 다음 kubernetes : HapRooxy -포트 Y에서 트래픽을 기본 백엔드로 전달하는 포트 x에 대한 프론트 엔드를 구성하는 방법