2016-07-01 4 views
0

는이 같은 사용자 정의 개체가PouchDb put (doc) 메서드가 내 매개 변수를 편집하는 이유는 무엇입니까?</p> <pre><code>function BlobModel(id){ this._id = id; this._rev = null; this.filename = ''; this.index = ''; this.data = ''; } </code></pre> <p>내 주머니 데이터베이스가 잘 작동에 넣을 경우,하지만 이렇게하면 나는 이상한 문제가 :

var myDoc = new BlobModel('myId'); 

db.put(myDoc).then(function(){ 
    console.log(myDoc); 
}) 

콘솔. 결과를 로그 : 내가 _rev 값을 가지고_rev_tree 재산myDoc 매개 변수에 추가는, 그것은 단지 dB 내부 문서에 추가되어야하는 이유 enter image description here . 네이티브 객체와 같은 동작이 아닌 이유는 무엇입니까? 그것을 고치는 방법? 내가 볼 수있는 유일한 방법은 물건을 넣기 전에 물건을 복제하는 것입니다.하지만 무거운 물건에는 이상합니다. 나는 기본 객체와 함께 할 경우

, 수정되지 않습니다 :이 개체 간의 약간의 차이가 있으며, JS에서

var myDoc = { 
    _id: 'myId', 
    _rev: null, 
    filename: '', 
    index: '', 
    data: '' 
} 

db.put(myDoc).then(function(){ 
    console.log(myDoc); 
}); 

답변

1

PouchDB는 일반 JavaScript 객체를 문서로 삽입해야합니다. 사용자 정의 클래스를 삽입하려고하면 복제 알고리즘이이를 무시하고 이상한 오류를 보게됩니다.

내 생각에 JSON.parse(JSON.stringify(myDoc))을 PouchDB에 삽입하기 전에 실행하는 것이 좋습니다. 그 중 하나 또는 사용자 지정 클래스를 사용하지 마십시오.

+0

도움을 주셔서 감사합니다. 맞춤 클래스에 PlainObject()에 메소드를 추가하겠습니다. – sylvain1264

1

PouchDB 인덱싱 see here을 관리 할 예절을 삽입합니다.

당신은 ..

db.put({ mydoc: myDoc }) 

을이 작업을 수행 할 수 있지만, 정말 문제인가?

+0

도움을 주셔서 감사합니다. 그러나 실제로 대답하지 않습니다. 왜 내가 네이티브 객체로이 동작을하지 않았는지 정확하게 알고 싶습니다. 좋아, PouchDb 속성을 삽입하지만 그것을 매개 변수에 넣어 개체를 직접 shoudn't 변경 알아요. – sylvain1264