2017-12-01 1 views
-1

Firebase 인증과 실시간 데이터베이스를 사용하여 Vue.js를 사용하여 웹 응용 프로그램을 구축하고 있습니다. 이 앱에서 사용자는 몇 가지 포인트를 얻기 위해 질문에 답변합니다.firebase 데이터베이스에서 중첩 된 배열의 값을 업데이트하십시오.

내 문제는입니다 : 내가 기존 배열에 이미 저장되어 해당 사용자의 progress/points 내 응용 프로그램의 모든 구성 요소를 업데이트하는 트랙에서 될 수 있도록 데이터베이스에서 생성을 업데이트 할. 의 내가 스크린 샷에서 강조 표시된 값을 +1 증가하고 싶은 말은하자 예를 들어

:

nested array

나는 일반 자바 스크립트와 같은 userid.progress[6][0] += 1 같은 생각했지만, 나는 데이터베이스를 업데이트 할 수 없습니다, 값은 여전히 ​​0입니다. .set() 또는 .update()에 대한 내용을 읽었으나이 경우 모든 배열을 다시 써야합니다 (문제가 될 수 있음).하지만 완전히 잘못되었을 수 있습니다.

추 신 : 사용자 ID 나 현재 사용자를 얻는 데 문제가 없습니다. 모든 것이 잘 작동합니다. 나를 도울 사람을 찾고 싶습니다. 미리 감사드립니다!

+0

당신은 그렇게 할 수 없습니다. 처음에'get()'값을 저장하고,'.update()'를 사용하여 증가시킨다. – Hareesh

+0

당신이 달성하고자하는 것이 조금 분명하지 않지만 아래의 몇 가지 가능한 문제에 대한 답을 썼다. 다음 번에 [붙어있는 곳을 재현하는 최소 코드] (http://stackoverflow.com/help/mcve)를 포함 시키십시오. 추측을 통해 많은 추측이 가능하며 신속하게 좋은 도움을 얻을 수있는 가능성이 크게 높아집니다. –

+0

나는 이것에 @FrankvanPuffelen 대답으로 갈 것이다. 하지만 일반적으로 [Arrays Are Evil] (https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html). 요소를 추가하거나 제거 할 때 배열을 읽고 다시 써야하기 때문에 작업하기가 매우 어렵습니다. 또한 직접 쿼리 할 수도 없습니다. 그것들은 실제로 JSON 구조체에 통합되지 않으며 일반적으로 더 나은 옵션이 있습니다. 특정 유스 케이스 (0, 1, 2, 3이 나타내는 것과 같은) 및 아마도 일부 코드로 질문을 업데이트 할 수 있다면 더 완전한 대답을 제공 할 수 있습니다. – Jay

답변

1

기존 점수를 업데이트하려는 경우 가장 세분화 된 수준으로 글을 쓸 수 있습니다. 그래서 :

ref.child("pjoCy...0tl3/progress/0/6/0").set(1) 

당신이 배열의 끝에 새 점수를 밀어 싶은 경우에, 당신은 실제로 끝에 새 값을 추가하기 위해 전체 점수의 배열을 읽어해야합니다. 이것은 사용자가 원하는 것처럼 배열 인덱스를 사용하지 말 것을 Firebase가 권장하는 많은 이유 중 하나입니다. 내가 더 약 structuring lists in the Firebase documentationhandling arrays in Firebase에 고전 블로그 게시물을 읽어 보시기 바랍니다

ref.child("pjoCy...0tl3/progress/0/6").push(1) 

: 당신 대신 우리가 새 값을 추가, 푸시 ID를 소위 경우처럼 쉽게된다.

관련 문제