2016-06-21 4 views
0

私はアプリケーション内のオブジェクトをループし、データベースに30個のメッセージがあると古いメッセージを削除しようとしています。ここに私のコードは、これまでのところです:Firebaseでオブジェクトを削除しますか? (JavaScript)

var ref1 = firebase.database().ref("chatRooms/" + rm + "/messages"); 
var query = ref1.orderByChild("time"); 

query.once("value").then(function(l) { 
    l.forEach(function(d) { 
     ref1.once("value").then(function(snapshot1) { 
     var ast = snapshot1.numChildren(); // Getting the number of children 
     console.log(ast); 
     if (ast > 29) { 
     d.remove(); 

     } 
    }); 
    }); 
}); 

唯一の問題は、私は一つ一つのために、次のエラーが表示されるということです。

SCRIPT438: Object doesn't support property or method 'remove'.

誰もがこの問題を解決する方法を知っている、または別のを知っている場合は、私がそれを感謝します!

答えて

0

dは、DataSnapshotです。特定の時刻に特定の場所の値を表します。直接削除することはできません。スニペット

d.ref.remove(); 

全作業(および簡体字):

しかし、あなたは値からある場所を調べることができ、そこremove()を呼び出す

function deleteMessages(maxCount) { 
    root.once("value").then(function(snapshot) { 
    var count = 0; 
    snapshot.forEach(function(child) { 
     count++; 
     if (count > maxCount) { 
     console.log('Removing child '+child.key); 
     child.ref.remove(); 
     } 
    }); 
    console.log(count, snapshot.numChildren()); 
    }); 

} 

deleteMessages(29); 

ライブコードサンプル:http://jsbin.com/tepate/edit?js,console

+0

お返事ありがとうございます。今すぐこのエラーが表示されます。SCRIPT5002:期待された機能。 ? – Collin

+0

私はコンソールのFirebaseからもこの警告を受け取ります:** FIREBASE WARNING:ユーザーコールバックによって例外がスローされました。 TypeError:期待される関数**。 – Collin

+0

問題を再現するjsfiddle/jsbinをセットアップできますか?そのようにコードを修正する方法を簡単に示すことができます。 –

関連する問題