노드 Firebase에는 제품 컬렉션이 있습니다. 무작위로 단일 제품을 표시해야 합니다. 잠재적으로 모든 제품을 검색한 다음 무작위로 하나를 선택할 수 있지만 대규모 컬렉션이 있는 경우 이 접근 방식은 비효율적입니다.
모든 제품을 다운로드하지 않으려면 다음을 사용할 수 있습니다. 고전적인 접근 방식:
코드:
<code class="js">const productsRef = FirebaseDatabase.getInstance().getReference().child("products"); const productNames = []; productsRef.once('value').then(snapshot => { snapshot.forEach(child => { productNames.push(child.child("name").val()); }); const randomIndex = Math.floor(Math.random() * productNames.length); const selectedProduct = productNames[randomIndex]; // Display the selected product console.log(selectedProduct); });</code>
더 큰 컬렉션의 경우 비정규화된 접근 방식이 권장됩니다:
데이터베이스 구조:
<code class="json">Firebase-root | --- products | | | --- productIdOne | | | | | --- //details | | | --- productIdTwo | | | --- //details | --- productIds | --- productIdOne: true | --- productIdTwo: true | --- //And so on</code>
코드:
<code class="js">const productIdsRef = FirebaseDatabase.getInstance().getReference().child("productIds"); const randomId = Math.floor(Math.random() * Object.keys(productIdsRef).length); const selectedId = Object.keys(productIdsRef)[randomId]; const productsRef = FirebaseDatabase.getInstance().getReference().child("products"); const selectedProductRef = productsRef.child(selectedId); selectedProductRef.once('value').then(snapshot => { // Display the selected product console.log(snapshot.val()); });</code>
두 접근 방식 모두 데이터 전송을 최소화하면서 대규모 컬렉션에서 무작위 제품을 효과적으로 검색합니다. 특정 사용 사례와 성능 요구 사항에 가장 적합한 접근 방식을 선택하세요.
위 내용은 노드의 대규모 Firebase 컬렉션에서 단일 무작위 제품을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!