私はTinderと似た「カードスタック」を持つアプリケーションを、FirebaseリアルタイムDBバックエンドとともに作成しています。新しいカードがなくなると、各カードは未読の新しいポストになります。しかし、私はこれのためにデータを構造化する最良の方法を知らない。読んだ投稿のIDをユーザーの下に保存できますか?投稿フィードを見ると、読んだ投稿のクライアント側を除外できますか?未読の投稿を取得するためのFirebase
これはちょっと混乱していて、非常に良いオプションのパフォーマンスが賢明ではないようです。より良い選択肢がありますか?
編集:私は考えているもののラフコード:
データ例
posts:
"-KibasdkjbSAdASd": {
title: 'New Post',
body: {
...
}
},
"-KisadBVsdadSd": {
title: 'New Post 2',
body: {
..
}
}
"-KibaFNQsicaASd": {
title: 'New Post 3',
body: {
...
}
}
users :
"-KisadBVsdadSd": {
name: 'Tom',
readPosts: {
"-KibasdkjbSAdASd": {
title: 'New Post',
body: {
...
}
},
"-KisadBVsdadSd": {
title: 'New Post 2',
body: {
..
}
}
}
}
コード
const rootRef = firebase.database.ref();
const postRef = rootRef.child("posts");
const readPostRef = rootRef.child("users/"+uid+"/readPosts");
let readPosts= [];
//Get initial list of read posts
readPostRef.once("value", function(snapshot) {
readPosts = Object.keys(snapshot);
});
//Update read posts when added
readPostRef.on("child_added", function(snapshot) {
readPosts = Object.keys(snapshot);
});
//Get list of posts, filtered on read post array
urlRef.on("value", function(snapshot) {
snapshot.forEach(function(child) {
if(!readPosts.includes(child.key)){
//Unread post
}
});
});
私の考える解決策はあなたのものです。クラウド機能でソート作業を行うこともできます。 – creativecreatorormaybenot