2016-07-25 2 views
-1

내 Node.js 응용 프로그램에서 DynamoDB를 처리하기 위해 Dynamoose을 사용하고 있습니다. 아래의 함수는 사용자 ID를 받아 값 'mynumber'에 값을 추가하고 새 레코드를 저장합니다.Amazon Web Services DynamoDB 항목 업데이트시 일관성이 없음

function updateData(userid, value) { 
    User.get(userid, function(err, user) { 
     user.mynumber = user.mynumber + value; 
     user.save(function(err) {}); 
    }); 
}; 

내 문제는이 시간이 거의 절반이 아닐 수도 있습니다. AWS DynamoDB 콘솔에 로그인 할 때 실행 후 레코드가 업데이트되지 않습니다. 레코드를 저장하기 전에 console.log을 실행하려고 시도했지만 정확합니다. 하지만 어떤 이유로 DB로 업데이트하지 않는 것 같습니다.

이 레코드를 업데이트하는 것이 왜 그렇게 일관성이 없으며 시간의 절반 정도는 완벽하게 작동하고 나머지 절반은 변경되지 않습니다.

추가 정보가 필요하거나 궁금한 점이 있으면 알려주십시오. 미리 감사드립니다.

+0

'저장'에서 오류 로깅을 시도 했습니까? –

+0

@PatrickGoley 예, 항상 null을 반환합니다. –

+0

또한 중요한 점은'save'는 콜백을 받아 들일만큼 비동기 적이지만'updateData' 함수는 그렇지 않습니다. 'updateData'를 호출 한 직후에 체크하고 있습니까? 완료하는 데 약간의 시간이 걸릴 수 있습니다. –

답변

0

알아 냈습니다. 나중에 참조 할 때와 다른 사람이 비슷한 문제를 겪고있는 경우에 대비하십시오.

기본적으로 실제로 저장 한 후에 호출되는 콜백을 만들어야했습니다. 원본을 저장하기 전에 DB에 요소를 저장하는 것 같습니다. 따라서 어떤 경우에는 위의 save 명령은 다음 저장을 호출하기 전에 완료되지만 다른 경우에는 완료되고 이전 값으로 저장됩니다.

그래서 저장이 완료된 후에 콜백에서 위의 저장 함수 뒤에 실행되는 코드를 실행하면 문제가 해결 된 것으로 보입니다.

관련 문제