2017-11-23 6 views
1

だから以下は私のfirebase databseのためのJSONです:以下 Firebaseクラウド機能します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); 
} 

ISSUE

コードは、それぞれのユーザーに変更があった場合にのみ機能します。たとえば、ユーザーの書き込みをuid 1YrpX2W2xnMPoy4YGpZcOE0xJ5g2で変更すると、refに10が設定されます。しかし、私が目指していたのは、それぞれのユーザーに対してref.set(10)という結果になるユーザーノードへの変更です。それは不可能ですか?申し訳ありませんが、あなたはおそらく推測できるように、私はfirebaseを初めて使っています。前もって感謝します。

答えて

1

FirebaseとJavaScriptを初めて使用している場合、Firebase用のCloud Functionsはそれを学ぶ最も良い方法ではありません。最初にFirebase documentation for Web developersを読んだり、Firebase codelab for Web developerとすることをお勧めします。これらは、多くの基本的なJavaScript、Web、Firebaseの相互作用をカバーしています。それらの後には、Cloud関数のコードも書く方がはるかに優れています。しかし、私はあなたのコードがなぜ動作しないのか、どうすれば下に行くのかを説明しようとします。

データベーストリガーを使用しています。データベーストリガーは、指定した条件に一致するデータベースへの書き込みがあるときにのみ呼び出されます。だから:

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

ユーザーノードへの書き込みがある場合にのみトリガーします。

あなたはすべてのユーザーの一括処理を行いたい場合は、おそらくHTTPトリガーを使用したいと思う:あなたはこの機能を展開する場合

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

、それはあなたのURLを与えます。この関数を呼び出すには、URLを呼び出すか、ブラウザで単に開くだけです。

この機能では、データベースからユーザーをロードして処理する必要があります。合計では次のようなものが残ります:

機能のコードを必要に応じて変更する必要があります。私は主に、HTTP経由でトリガーし、データベースからデータをロードするという主要な概念を示しました。

関連する問題