몽구스 문서를 어떻게 일반 객체로 바꾸나요?
몽구스에서 찾은 문서에서 JSON 인코딩 전에 확장하고 응답으로 보냅니다. 문서에 속성을 추가하려고하면 무시됩니다. Object.getOwnPropertyNames(doc)
정규 확장을 불가능하게하는 속성은 나타나지 않습니다. 이상한 점은 JSON.parse(JSON.encode(doc))
작동하고 올바른 모든 속성을 가진 객체를 반환 한다는 것입니다 . 더 좋은 방법이 있습니까?
몽구스 는의 메소드 를 Model
상속받습니다 . 나는 당신이 찾고있는 것이의 결과라고 생각합니다 .Document
toObject()
doc.toObject()
http://mongoosejs.com/docs/api.html#document_Document-toObject
이를 수행하는 또 다른 방법은 Mongoose에게 lean()
쿼리 체인에서 사용하여 반환 된 문서의 일반 JavaScript 버전 만 있으면된다는 것 입니다. 그렇게하면 Mongoose는 전체 모델 인스턴스를 만드는 단계를 건너 뛰고 직접 doc
수정할 수 있습니다.
MyModel.findOne().lean().exec(function(err, doc) {
doc.addedProperty = 'foobar';
res.json(doc);
});
속성이 모델에없는 경우 빠른 방법 :
document.set( key,value, { strict: false });
이와 같은 문제를 해결하는 더 좋은 방법은 다음 doc.toObject()
과 같습니다.
doc.toObject({ getters: true })
다른 옵션은 다음과 같습니다.
getters:
모든 게터 적용 (경로 및 가상 게터)virtuals:
가상 게터 적용 (게터 옵션 무시 가능)minimize:
빈 객체 제거 (기본값은 true)transform:
결과 문서에 반환하기 전에 적용 할 변환 함수depopulate:
채워진 경로를 제거하여 원래 참조로 바꿉니다 (기본값은 false).versionKey:
버전 키 포함 여부 (기본값은 true)
예를 들어 말할 수 있습니다
Model.findOne().exec((err, doc) => {
if (!err) {
doc.toObject({ getters: true })
console.log('doc _id:', doc._id)
}
})
이제 작동합니다.
자세한 내용은 다음을 참조하십시오 : http://mongoosejs.com/docs/api.html#document_Document-toObject
몽구스 문서에서 일반 객체를 얻으려면 _doc
다음과 같이 속성을 사용 했습니다.
mongooseDoc._doc //returns plain json object
나는 시도 toObject
했지만 함수, 인수 및 내가 필요없는 다른 모든 것을 나에게 주었다.
참고 URL : https://stackoverflow.com/questions/7503450/how-do-you-turn-a-mongoose-document-into-a-plain-object
'Programing' 카테고리의 다른 글
SQL : 레코드가 있는지 올바르게 확인하는 방법 (0) | 2020.05.16 |
---|---|
Workbench를 사용하여 서버에서 데이터베이스의 ER 모델을 얻는 방법 (0) | 2020.05.16 |
NumPy 배열은 JSON 직렬화 가능하지 않습니다 (0) | 2020.05.16 |
UIButton : 적중 영역을 기본 적중 영역보다 크게 만들기 (0) | 2020.05.16 |
배열의 첫 번째 N 요소를 얻습니까? (0) | 2020.05.15 |