2017-11-23 2 views
1

그래서 다음 내 중포 기지, 데이타베이스에 대한 JSON입니다 : 아래 중포 기지 클라우드 함수 대해 forEach()

{ 
    "1YrpX2W2xnMPoy4YGpZcOE0xJ5g2" : { 
    "email" : "[email protected]", 
    "fullname" : "Muyiz", 
    "selection" : [ 1, 2, 3, 4, 5, 6 ], 
    "teamname" : "awon", 
    "total" : 12, 
    "userName" : "motmail.com", 
    "week1" : 0, 
    "week10" : 0, 
    "week11" : 0, 
    "week12" : 0, 
    "week2" : 0, 
    "week3" : 0, 
    "week4" : 0, 
    "week5" : 0, 
    "week6" : 12, 
    "week7" : 0, 
    "week8" : 0, 
    "week9" : 0 
    }, 
    "6K9rQiZQ3jaV38WWtDbNwxhqIwc2" : { 
    "email" : "[email protected]", 
    "fullname" : "Dai", 
    "selection" : 0, 
    "teamname" : "Bayern Neverlosin'", 
    "total" : 0, 
    "userName" : "[email protected]", 
    "week1" : 0, 
    "week10" : 0, 
    "week11" : 0, 
    "week12" : 0, 
    "week2" : 0, 
    "week3" : 0, 
    "week4" : 0, 
    "week5" : 0, 
    "week6" : 0, 
    "week7" : 0, 
    "week8" : 0, 
    "week9" : 0 
    }, 
    "9OgN4HyMtARaQEQV1mKQ5lyE1992" : { 
    "email" : "jonail.com", 
    "fullname" : "Jon", 
    "selection" : [ 40, 8, 10, 24, 18, 34 ], 
    "teamname" : "Chad fc", 
    "total" : 0, 
    "userName" : "[email protected]", 
    "week1" : 0, 
    "week10" : 0, 
    "week11" : 0, 
    "week12" : 0, 
    "week2" : 0, 
    "week3" : 0, 
    "week4" : 0, 
    "week5" : 8, 
    "week6" : 0, 
    "week7" : 0, 
    "week8" : 0, 
    "week9" : 0 
    }, 
    "AGVZAUye5ZbZgvwCOpMeDkoOsEU2" : { 
    "email" : "[email protected]", 
    "fullname" : "Emeka Iheme", 
    "selection" : 0, 
    "teamname" : "Young Money", 
    "total" : 0, 
    "userName" : "[email protected]", 
    "week1" : 0, 
    "week10" : 0, 
    "week11" : 0, 
    "week12" : 0, 
    "week2" : 0, 
    "week3" : 0, 
    "week4" : 0, 
    "week5" : 0, 
    "week6" : 0, 
    "week7" : 0, 
    "week8" : 0, 
    "week9" : 0 
    } 
} 

근무 가지있다 내가 그에게 사용하는 클라우드 기능입니다 :

exports.update = functions.database.ref('/users/{user.uid}') 
    .onWrite(event=>{ 
    console.log ('it banged!'); 

    const uid = event.data.key; 


    ref = admin.database().ref(`/users/`+ uid + `week1`); 
    pref1 = admin.database().ref("Player").child("playerweek8"); 
    ref2 = admin.database().ref(`/users/` + uid `/`); 
    if(n === 4){ 

     ref.set(10); 
} 

문제

코드는 해당 사용자가 변경된 경우에만 작동하는 것이 문제입니다. 예를 들어 사용자의 쓰기를 uid 1YrpX2W2xnMPoy4YGpZcOE0xJ5g2으로 변경하면 10을 ref로 설정합니다. 하지만 내가 목표로 한 것은 각 사용자에 대해 ref.set(10)이되도록 사용자 노드를 변경하는 것입니다. 그게 가능하지 않니? 아마 짐작할 수 있듯이 미안하지만, 나는 firebase을 처음 사용합니다. 미리 감사드립니다.

답변

1

Firebase 및 JavaScript를 처음 사용하는 경우 Firebase 용 Cloud Functions가 가장 좋은 방법은 아닙니다. 먼저 Firebase documentation for Web developers을 읽고/또는 Firebase codelab for Web developer을 권합니다. 자바 스크립트, 웹 및 파이어베이스의 기본적인 상호 작용을 다룹니다. 그 후에는 Cloud 기능에 대한 코드를 작성하는 것이 훨씬 더 쉬울 것입니다. 하지만 왜 코드가 작동하지 않는지, 어떻게 접근 할 수 있는지 설명해 보겠습니다.

데이터베이스 트리거는 사용자가 지정한 기준과 일치하는 데이터베이스에 쓸 때 호출됩니다. 그래서 귀하의 :

exports.update = functions.database.ref('/users/{user.uid}').onWrite(

사용자 노드에 쓰기가있을 때만 트리거됩니다. 이 기능을 배포 할 때

exports.updateUsers = functions.https.onRequest((req, res) => { 
    ... 
}); 

, 그것은 당신에게 URL을 제공 : 모든 사용자의 일괄 처리를 수행 할 경우

, 당신은 아마 HTTP 트리거를 사용 할 것입니다. URL을 호출하거나 브라우저에서 열어 함수를 트리거 할 수 있습니다.

이 함수에서는 데이터베이스에서 사용자를로드하여 처리하려고합니다. 총계로 다음과 같은 내용을 남길 것입니다 :

기능의 코드를 필요에 맞게 수정해야합니다. 주로 HTTP를 통해 트리거 한 다음 데이터베이스에서 데이터를로드하는 것과 같은 주요 개념을 집중적으로 보여주었습니다.