2016-07-25 1 views
0

내 pouchDB 코드가 내 데이터베이스에서 문서를 업데이트하려고에 이상한 충돌이409 오류 충돌 업데이트, 업데이트 pouchDB의 문서

코드 :

this.addToExistingUser = function (docId, key, value) { 
     usersDatabaseRemote 
       .get(docId) 
       .then(function (doc) { 
        doc[key] = value; 
        return usersDatabaseRemote.put(doc, docId, doc._rev); 
       }) 
       .then(function() { 
        console.log('added field: ' + key + ' to doc ' + docId); 
       }) 
       .catch(function (err) { 
        console.log("error from addToExistingUser:"); 
        console.log(JSON.stringify(err)); 
       }); 

} 

여기서

.factory('usersDatabaseRemote', [ 
    'pouchDB', 
    function (pouchDB) { 
     'use strict'; 

     var usersDatabaseRemote = pouchDB('https://id:[email protected]/boardl_users'); 

     return usersDatabaseRemote; 
    } 
]) 

리드 :

{"status":409,"name":"conflict","message":"Document update conflict","error":true,"reason":"Document update conflict."} 

그러나 코드에서 볼 수 있듯이 원격 문서에서 개정 번호 rev을 가져와서 왜이 문제가 있는지 알 수 없습니다.

감사

+1

당신이 기능을 "addToExistingUser"연속으로 두 번 호출 했습니까? 충돌은 문서의 비동기 호출로 인해 발생할 수 있습니다. –

+0

정확! 당신은 맞습니다 @ AlexisCôté. – Louis

답변

1

신용 : 나는 원격 문서를

pouchDBservice.addToExistingUser(userr._id, 'weight',  
pouchDBservice.addToExistingUser(userr._id, 'height', userHeight); 
pouchDBservice.addToExistingUser(userr._id, 'technique', userTechnique); 

를 업데이트하고 이것이 ._rev 번호로 장난 된 비동기 함수를 여러 번 호출 된

AlexisCôté

@.

그래서 지금은 객체에 동시에 모든 매개 변수를하고있는 중이 야 :

pouchDBservice.addObjectToExistingUser(userr._id, objectToAdd); 

로 :

this.addObjectToExistingUser = function (docId, obj) { 
      usersDatabaseRemote 
       .get(docId) 
       .then(function (doc) { 
        for (var key in obj) { 
         if (!obj.hasOwnProperty(key)) continue; 
         console.log(key, obj[key]) 
         doc[key] = obj[key]; 
        } 
        return usersDatabaseRemote.put(doc); 
       }) 
       .then(function() { 
        console.log('addObjectToExistingUser added object: ' + JSON.stringify(obj) + ' to doc ' + docId); 
       }) 
       .catch(function (err) { 
        console.log("error from addObjectToExistingUser:"); 
        console.log(JSON.stringify(err)); 
       }); 
     };