2017-03-06 3 views
0

Firebase DB의 카운터 레코드를 업데이트하려고하는데 데이터가 중첩되어있을 때 업데이트 할 수 있지만 "total"값을 업데이트하는 데 문제가 있습니다. 최고 수준.Firebase 업데이트 최상위 값

JSON은 :

{ 
    "accounts" : { 
    "-KRPSyO4B48IpBnHBTYg" : { 
     "dateCreated" : "", 
     "email" : "", 
     "provider" : "", 
     "userId" : "" 
    } 
    }, 
    "products" : { 
    "-KUKRafaNurpFhGF4jQa" : { 
     "dateCreated" : "", 
     "description" : "", 
     "imageUrl" : "", 
     "lastUpdated" : "", 
     "name" : "", 
     "postCount" : -1, 
     "tags" : [ "Tag" ], 
     "url" : "", 
     "viewCount" : 10, 

    } 
    }, 
    "total" : 1 
} 

이것은 단순히 그러나 내가 뭔가 일이 때마다 그에게 하나를 추가 할, 100 "전체"의 값을 대체합니다. 내가 여기 처음 "전체"의 값을 검색하고 있지 않다 실현하고, 그

firebase.database().ref().update({ 
total: + 100 
       }); 

내 다른 카운터

이와 같이 .. 나뿐만 아니라 그 값을 얻는 데 문제가 내 문제의 일부입니다 다른 중첩 값을 아주 잘 업데이트하십시오 :

firebase.database().ref('products/' + product.id).update({ 
postCount: product.postCount + 1, 
viewCount: product.viewCount + 1 

       }); 

미리 도움을 청하십시오!

답변

1

이와 같은 속성 값을 증가시킬 때마다 거래를 사용해야합니다. 두 명의 사용자가 해당 속성에 대해 서로 다른 로컬 값을 가질 때 하나의 업데이트가 다른 속성을 덮어 씁니다. 또한 해당 속성의 현재 값을 가져 오는 데 도움이됩니다.

이 코드는 원하는대로 수행해야한다고 생각합니다.

firebase.database().ref('total').transaction(function(value) { 
    if (value) { 
    value++; 
    } 
    return value; 
}); 

현재 거래에 읽을 수 있습니다 : 마법처럼 Firebase Transactions

+0

을! 감사! – MacD

관련 문제