mitmitwiki
νμ΄μ΄λ² μ΄μ€λ‘ ν€μλ κ²μ ꡬννκΈ°
kohi β
2023. 4. 7. 23:08
πΌ νμ¬ νμ΄μ΄μ€ν μ΄μμλ μ 체 ν μ€νΈ κ²μμ μ§μνμ§ μλλ€. νμ΄μ΄λ² μ΄μ€λ₯Ό μ¬μ©νλ©΄μ κ²μμ ꡬννκΈ° μν΄μλ 쿼리문μ λ³νν΄μ μ¬μ©νκ±°λ νμ¬ μ루μ μΈ Algoliaλ Elastic κ°μ κ²μ μμ§ APIλ₯Ό μ¬μ©ν΄μΌ νλ€.
νμ΄μ΄λ² μ΄μ€μμ μ 곡νλ κΈ°λ₯μΌλ‘λ§ ν€μλ κ²μμ ꡬννκΈ° μν΄ μΏΌλ¦¬λ¬Έμ μ¬μ©ν΄ 보μ.
ποΈ κΈ°μ‘΄ μ½λμ λ¬Έμ μ
const q = query(collection(db, 'feed'), where('address', '>=', keyword), where('address', '<=', keyword + '\uf8ff'));
const querySnapshot = await getDocs(q);
setState(
querySnapshot.docs.map((doc) => ({
...doc.data(),
})),
);
- ν΄λΉ 쿼리문μ 무쑰건 prefix κ²μλ§ κ°λ₯νλ€.
- addressκ° μ λΌλ¨λ μ¬μμμΈ λ°μ΄ν°μ κ²½μ° “μ λΌλ¨λ” νΉμ “μ λΌλ¨λ μ¬μμ” λ‘ κ²μνλ©΄ μ‘°νκ° κ°λ₯νλ°, “μ¬μμ” λ‘λ κ²μν μ μλ€.
ποΈ κ·Έλμ μ΄λ»κ² νλ
refer
https://medium.com/@ken11zer01/firebase-firestore-text-search-and-pagination-91a0df8131ef
1. κ²μ λμμ΄ λλ μμΈ λ°μ΄ν°λ₯Ό λ§λ€μ΄μ keyword νλμ λ°λ‘ μ μ₯νλ€. ν΄λΉ νλ‘μ νΈμμλ κ²μ λμμ΄ λλ νλ κ°μΈ address, addressDetailμ λμ΄μ°κΈ° λ¨μλ‘ μͺΌκ° ν΄λΉ κ°μ κ°μ§κ³ μλ λͺ¨λ λ¬Έμμ μμΈμ μΆκ°νλ€.
useEffect(() => {
setKeyword(address.split(' '));
{
addressDetail && setKeyword((prev) => [...prev, addressDetail]);
}
}, [address, addressDetail]);
2. κ²μ 쿼리λ₯Ό μ¬μ©ν λ array-contains μ°μ°μλ₯Ό μ¬μ©νλ€. 1λ²μμ μΆκ°ν keyword νλμ λ°°μ΄μ ν€μλκ° ν¬ν¨λ κ²½μ° κ°μ λͺ¨λ λΆλ¬μ¨λ€.
export const searchFeedList = async (keyword: string, setState: any) => {
const q = query(collection(db, 'feed'), where('keyword', 'array-contains', keyword));
const querySnapshot = await getDocs(q);
setState(
querySnapshot.docs.map((doc) => ({
...doc.data(),
})),
);
};
ποΈ νμ¬ μ½λμ λ¬Έμ μ
- μΈλ±μ€λ₯Ό λ§λ€ λ λν
μΌνκ² κ°μ μ λ¬νμ§ μκΈ° λλ¬Έμ -postcodeλ‘ λ°μ μ£Όμλ₯Ό λμ΄μ°κΈ° λ¨μλ‘ μͺΌκ° κ±° + μ μ κ° μ
λ ₯ν μμΈ μ£Όμ λ¨μλ‘ μ μ₯- μμ ν κ²μμ΄ λΆκ°λ₯νλ€.
- μ¬μ μ λ¨ μ¬μμ λ¨
- μ λ¨ μ λ¨ μ λΌλ¨λ λ¨
- μμ μ μλ λμλ μ λΌλ¨λ μ¬μμλ μ λ¨γ γ γ γ
- ν€μλλ₯Ό μ΄λ»κ² λν μΌνκ² λ½κ°μ μ μ₯ν κ²μΈκ°λ₯Ό ν΄κ²°νλ€λ©΄ μ€νλ € κ²μ κΈ°λ₯μ μμ±λκ° λμμ§ μ μλ μ½λκ° λκΈ° λλ¬Έμ μ μλ―Έν λ³νλΌκ³ μκ°νλ€.