0

10時間の子供を削除する機能が必要です。これまでのところこのコードがありますが、これをFirebaseクラウド機能にデプロイすると、すぐにデータベースからすべてのデータが削除されます。私は何が間違っているのか分かりません。助けてください!10時間後にFirebaseの子を削除する

exports.deleteOldItems = functions.database.ref('Rollerbanken/{pushId}') 
.onWrite(event => { 
    var ref = event.data.ref.parent; // reference to the items 
    var now = Date.now(); 
    var cutoff = now - 10 * 60 * 60 * 1000; 
    var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff); 
    return oldItemsQuery.once('value', function(snapshot) { 
    // create a map with all children that need to be removed 
    var updates = {}; 
    snapshot.forEach(function(child) { 
     updates[child.key] = null 
    }); 
    // execute all updates in one go and return the result to end the function 
    return ref.update(updates); 
    }); 
}); 

マイFirebaseデータベース構造:

{ 
    "Rollerbanken" : { 
    "-Ku_Ywh8wElDdwNqa0KW" : { 
     "Extrainformatie" : "", 
     "Latitude" : "51.8306880305073", 
     "Longitude" : "5.90483402833892", 
     "Staater" : "Staat er nog steeds", 
     "Staaternietmeer" : "", 
     "Stad" : "Nijmegen", 
     "Tijd" : "19:50", 
     "TijdControle" : "19:50", 
     "TijdControleniet" : "", 
     "TypeControle" : "Rollerbank", 
     "TypeControle2" : "Rollerbank", 
     "postKey" : "-Ku_Ywh8wElDdwNqa0KW", 
     "timestamp" : 1506016223000 
     } 
     } 
    } 
+1

「Rollerbanken/{pushId}」に保存されているアイテムの例を表示できますか? –

+0

もちろん、私はそれを編集しました! – Danjhi

答えて

0

あなたはあなたのコードでref.orderByChild('timestamp')を持っていますが、何のtimestampフィールドは、あなたのデータではありません。これは、nullタイムスタンプを持つと解釈されます。実際には、Firebaseによって課されたorderingの中で最も高い優先順位を持ちます。その結果、すべてのデータノードは指定されたcutoffより前に注文され、削除されます。

これを解決するには、timestampフィールドをスキーマに追加する必要があります。

+0

私は構造内にタイムスタンプを持っています: "タイムスタンプ":ServerValue.timestamp()、それでも動作しません! – Danjhi

+0

私はログブックは、それは 'okis'をfinishendと言います。だから私は何が起こっているのか分からない? – Danjhi

関連する問題