2015-01-21 19 views
2

특정보기에 대해 pouchDB의 변경 사항을 검색하려고하지만 여전히 모든 문서를받는 중 ... 내가 뭘 잘못하고 있습니까? Havent는 파우치 API 문서 (http://pouchdb.com/api.html#changes)를 제외하고 어떤 방법이든 자습서 또는 자세한 정보를 찾았습니다. 나는 을 보았습니다.필터 옵션이 있습니다.특히 pouchdb 변경 사항을 수신하면 모든 문서가 반환됩니다.

이보기 설계 및 로 저장/

function(doc) { 
    if (doc.model == 'note') { 
    emit(doc._id, doc); 
    } 
} 

라이브 변경 피드 노트 :

pouch.changes({ 
    live: true, 
    view: '_view/notes' 
}) 
.on('change', function handleUpdate(change) { 

    // log changed document 
    pouch.get(change.id).then(function(row) { 
    console.log(row); 
    } 

}) 

은 아마보기 경로가 잘못 ...? 도움 주셔서 감사합니다. 훨씬 더 간단하게

답변

0

, 당신은 할 수 있습니다 :

pouch.changes({ 
    live: true, 
    include_docs: true 
}).on('change', function (change) { 
    if (change.doc && change.doc.model === 'note') { 
    console.log(change); 
    } 
}); 

신뢰 나; changes() 필터의보기를 사용하면 불필요한 복잡성이 추가되고 더 빨리 수행되지는 않습니다. 문서에서 명확히하지 않으셔서 죄송합니다. :)

+0

전체 데이터베이스 컨텐츠를 얻고 싶을 때보기를 사용하는 것은 쓸모가 없습니다. 그러나 데이터베이스의 하위 집합에서 복제하려는 경우에는 어떻게해야합니까? allDocs()에서 뷰를 사용하면 changes() 및 replicate()가 잘되어 있어야합니다. 그렇습니까? – PhE

+0

잘 작동하지만 TBH를 많이 사용하지 않았기 때문에 버그가 없다는 것을 보장 할 수는 없습니다. 또한 {view : 'myview'}를 사용하면 성능/코드 복잡성의 이점을 얻지 못합니다. 나는 버그를 제기 할 것이다. – nlawson

+0

버그 접수 : https://github.com/pouchdb/pouchdb/issues/3466 – nlawson

0

기본적으로 변경()은 데이터베이스의 시작에서 모든 변경 사항을 반환합니다. 따라서 ALL 문서가 변경되며 이는 allDocs() 호출과 동일합니다.

특정 시점에서 변경 사항을 적용하려면 이후 옵션 매개 변수를 지정해야합니다. PouchDB api doc에서

: 당신은 db.info()하거나 전화에서 일련 번호를 얻을 수

options.since: Start the results from the change immediately after the 
given sequence number, you can also pass 'now' if you want only 
new changes. 

옵션 local_seq와 db.get (DOCID)를 통해 문서를 검색 할 때.

+0

실시간 변경을하고 있다면,'{since : "now"} "로 간단히 할 수있다. 주어진 시점 이후에 변경 사항을 듣기 시작합니다. – nlawson