FireBaseコレクションから最初の要素を取得してから削除する必要がありますが、それを実行する方法を理解することはできません。クラウド機能に必要です。
await ref
.doc(ref.limit(1).get().docs[0]);
_
彼/彼女の答えに提示されているBohkovalの全体的な論理は正しいですが、答えはRealtime Databaseと関連がありますが、OPはFireStore(使用されているタグから)彼の質問で)。
あなたが以下のコメントで言ったようにあなたが言ったように、あなたが次のコメントで言ったように、あなたが言ったようにあなたが言ったと仮定して、FireStoreのために次のようにするでしょう:
return admin.firestore().collection("yourCollection")
.orderBy("yourTimestamp", "desc")
.limit(1)
.get()
.then(querySnapshot => {
if (!querySnapshot.empty) {
//We know there is one doc in the querySnapshot
const queryDocumentSnapshot = querySnapshot.docs[0];
return queryDocumentSnapshot.ref.delete();
} else {
console.log("No document corresponding to the query!");
return null;
}
});
_
目的の要素のdelete()
メソッドを呼び出す必要があります。
Firebase Collectionは順序付けられていないデータ型であるため、「最初の要素」と同じ概念はありません。しかし、あなたは最初にどの要素を追加したかを区別するために、add()
いくつかのフラグ(たとえばタイムスタンプ)を備えています。 FireBase Collection自体は、要素を「First」として検出するための組み込みフラグを持っていません。
たとえば、タイムスタンプフラグがある場合
var collection = firebase.database().ref('/path/to/collection');
var collectionLast = collection.orderByChild('timestamp').limit(1);
var listener = collectionLast.on('child_added', function(snapshot) {
snapshot.ref.remove();
});
_
child_added
イベントはスナップショットペイロードでトリガされて削除されます。また、クラウド機能に必要な場合は、value
イベントに注意してください。次のコードに3つのステップを変更する必要があります。
collectionLast.once('value', function(snapshot) {
var updates = {};
snapshot.forEach(function(child) {
updates[child.key] = null
});
return ref.update(updates);
});
_
詳細については、Doc : https://firebase.google.com/docs/database/admin/retrieve-data