【发布时间】:2020-12-14 07:26:42
【问题描述】:
我正在尝试使用 firebase 将“添加到收藏夹”功能编码到博客中。为此,我有一个想法,即过滤包含所有文章的数组并仅保留用户最喜欢的文章。问题是我需要一个字段值 (isFavorite),它是一个布尔值,来检查它是否是用户最喜欢的文章之一,但这迫使我使用 .then() 来获取这个布尔值。不幸的是,我认为这 .then() 使我的 .filter() 没有过滤任何东西。
如果您知道如何使用可在 .filter() 条件下工作的表达式获取此字段值,请告诉我
export default function FavoriteCardlist() {
const [favoriteArticles, setFavoriteArticles] = useState([]);
const [uid, setUid] = useRecoilState(userIDCheck);
useEffect(() => {
db.collection("articles").onSnapshot((snapshot) => {
setFavoriteArticles(
snapshot.docs.map((doc) => ({
id: doc.id,
article: doc.data(),
}))
);
});
}, []);
const favoriteArticlesList = favoriteArticles
.filter((article) =>
db
.collection("users")
.doc(uid)
.collection("favoriteArticles")
.doc(article.id)
.get()
.then((doc) => doc.data()?.isFavorite)
)
.map((article) => (
<div key={article.id}>
<h2>{article.article.title}</h2>
</div>
));
return <div className="cardlist">{favoriteArticlesList}</div>;
【问题讨论】:
标签: javascript reactjs firebase filter google-cloud-firestore