
지난번 포스팅에서는 DB를 넣어봤다면 그걸 가져와서 읽어보도록 하겠다!
코딩애플님 강의를 듣고 있다.
코딩애플님 강의에서는 Vanilla JS와 jQuery를 사용하는 반면, 나는 React로 하다보니 거의 내 마음대로 개발하니 참고만 할 것..!
firestore.collection("이름")에는 onSnapshot 메서드로 실시간 정보를 가져올 수 있다.
snapshot이 생성된다.snapshot을 업데이트한다.useEffect(()=>{
db.collection('이름').onSnapshot(snapshot => {
const arrayname = snapshot.docs.map(doc=> ({
id: doc.id,
...doc.data()
}));
})
}. []);
docs로만 호출하면 아래처럼 뭐가 나오긴하는데, 알아보기 힘들다..

그래서 여기다가data()를 입력하면 우리가 저장한 데이터들이 읽기 쉽도록 출력된다.

이렇게하면 모든 문서를 id에 따라 오름차순으로 불러와준다.
만약, 여기서 데이터 정렬 순서를 지정해서 불러오고 싶다면 orderBy를 추가하면 된다.
useEffect(()=>{
db.collection('이름').orderBy("이름").onSnapshot(snapshot => {
const arrayname = snapshot.docs.map(doc=> ({
id: doc.id,
...doc.data()
}));
})
}. []);


useEffect로 데이터를 불러온다.
import * as $ from "./styles";
import { db } from "../../index";
import { useEffect, useState } from "react";
import Product from "../Product";
const Products = () => {
const [products, setProducts] = useState([]);
useEffect(() => {
db.collection("product")
.orderBy("price", "desc")
.onSnapshot((snapshot) => {
const productsArray = snapshot.docs.map((doc) => ({
id: doc.id,
...doc.data(),
}));
setProducts(productsArray);
});
}, []);
return (
<$.ProductSection>
<$.ProductsInformation>
{products.map(({ title, price }) => (
<Product title={title} price={price} />
))}
</$.ProductsInformation>
</$.ProductSection>
);
};
export default Products;
orderBy를 연습하기 위해서 가격별로 정렬했는데, 그냥 나중에 등록한 시간별로 저장하는 것이 좋을 것 같다.$. 가 뭐야?styled-components를 사용하고 있다.styled-components를 사용할 때 $.를 작성해서 구별을 해주고 있다.import * as $ from "./styles";
const Product = (props) => {
const { title, price } = props;
return (
<$.ProductSection>
<$.ProductImageSection>
<$.ProductThumnail
src="https://via.placeholder.com/350"
alt="logo image"
/>
</$.ProductImageSection>
<$.ProductsInformation>
<p>{title}</p>
<p>2030년 1월 8일</p>
<p>{price} 원</p>
<p>💚 0</p>
</$.ProductsInformation>
</$.ProductSection>
);
};
export default Product;