2017-12-28 13 views
0

나는 몽고 DB와 몽구스로 익스프레스 js API를 개발 중이다.es6 스프레드 연산자 - 몽구스 결과 복사본

내가 몇 가지 변수로 구성된 자바 스크립트 ES6의 객체와 몽구스 요청의 결과를 만들고 ES6 확산 연산자 그렇게 할 싶습니다 :

MyModel.findOne({_id: id}, (error, result) => { 
    if (!error) { 
     const newObject = {...result, toto: "toto"}; 
    } 
}); 

문제는 그 스프레드 연산자를 적용 결과은 이상한 방식으로 변환 : 난 그렇게하기 전에 CONSOLE.LOG 때

newObject: { 
    $__: { 
     $options: true, 
     activePaths: {...}, 
     emitter: {...}, 
     getters: {...}, 
     ... 
     _id: "edh5684dezd..." 
    } 
    $init: true, 
    isNew: false, 
    toto: "toto", 
    _doc: { 
     _id: "edh5684dezd...", 
     oneFieldOfMyModel: "tata", 
     anotherFieldOfMyModel: 42, 
     ... 
    } 
} 

나는 종류의 개체 결과가 그것으로 특정 상호 작용을 허용하는 몽구스에 의해 강화되는 것을 이해하지만, 그 모든 것들이없는 단순한 물체를 묘사합니다.

... result._doc 나는이 부분을 추상화하고 그런 식으로 적합하지 않기 때문에 속임수에 넣고 싶지 않습니다. 어쩌면 에릭 같은 물건없이 물건을 복사하는 방법이 있을지도 모른다.

감사합니다.

+0

'toString' 메소드를 살펴 보겠습니다. 그대가 console.log의 내용을 보게된다. –

+0

결과에'toString'을 쓰면 내 필드 만있는 단순한 객체가 반환되므로 객체가 정상적인 것처럼 보이지만 객체 구조를 변경하는 스프레드 연산자를 사용하려고 할 때이다. 'Object.assign()'와 완전히 같습니다. –

+0

그래, 그럼'console.log (result.toString)'할 일이 어떻게 보일까 ... –

답변

1

몽구스 Document.toObject() 방법을 사용할 수 있습니다. 데이터베이스에서 가져온 기본 JavaScript 객체를 반환합니다.

const newObject = {...result.toObject(), toto: "toto"}; 

당신은 .toObject() 방법 here에 대한 자세한 내용을보실 수 있습니다.

+1

좋아, 그게 바로 내가 뭘 찾고 있었는지 찾지 못했지만 :) 감사합니다. 더 많은 사람들을 도울 것입니다. –

관련 문제