我使用類似於Tinder的「卡堆棧」創建了一個應用,其中包含Firebase實時數據庫後端。每張卡片將是一個新的未讀帖子,如果用戶用完新帖子,他們將用完卡片。不過,我不知道爲此構建數據的最佳方式。我可以將閱讀帖子的ID存儲在用戶下,然後當我看帖子feed時,我可以過濾掉閱讀帖子客戶端?用於獲取未讀帖子的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