0

ソウオブジェクトので、私は使用するようにそれらを持参しようとしてきた。..カウント子は、機能を追加しましたfirebase

ここに私のデータが構成されている方法です。

-feed1 
    --child count = 0 
    --childs 
    ---1 
    ---2 
    ---3 
-feed2 
    --child count = 0 
    --childs 
    ---1 
    ---2 
    ---3 
-feed3 
    --child count = 0 
    --childs 
    ---1 
    ---2 
    ---3 

私の目標は、各フィードオブジェクト用ですそれぞれの子フィールドがいくつあるかを数えることができるようにするには、それぞれの子フィールドの数と子カウントフィールドを更新します。

これまで私が持っていたのは、私は子オブジェクトを追加してテストしましたが、それはその機能を引き起こすようには見えませんでした。私はそれはそれのワイルドカード要素とは何かを持っていますが、実際にそれ

var functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

exports.countParent = functions.database.ref('{schoolid}/childs').onWrite(event => { 
    return event.data.ref.parent().child('childCount').set(event.data.numChildren()); 
}); 

任意のアイデアを行う方法を見つけ出すことはできませんと思われますか?

+0

ログにエラーがありますか? –

答えて

1

error logs in the Firebase Consoleを確認してください。エラーが表示される場合があります。

Parent is a property, not a function

あなたの関数でエラーを修正しても、エラーが発生しやすくなります。 numChildren()は非効率的で、トランザクションを使用する必要があります。

私はあなたのスキーマのための私達のChild Count example on Githubから作業コード変更:

exports.countParent = functions.database.ref("{schoolid}/childs/{childid}").onWrite(event => { 
    var collectionRef = event.data.ref.parent; 
    var countRef = collectionRef.parent.child('childCount'); 

    return countRef.transaction(function(current) { 
    if (event.data.exists() && !event.data.previous.exists()) { 
     return (current || 0) + 1; 
    } 
    else if (!event.data.exists() && event.data.previous.exists()) { 
     return (current || 0) - 1; 
    } 
    }); 
}); 

良い出発点でなければなりません。

+0

ああ、私の間違い!ごめんなさい!!!私は子供のカウントの例があったことを認識していない.. stackoverflowを気にしていないだろう!本当にありがとう –

関連する問題