firebase - query - Firestore 란 무엇입니까?




firestore set reference (2)

새로운 Firebase Firestore를 탐색 중이며 reference 라는 데이터 유형이 포함되어 있습니다. 이 일이 내게 어떤 일이 일어나는지 분명하지 않습니다.

  • 그것은 외래 키와 같은가요?
  • 다른 위치에있는 컬렉션을 가리키는 데 사용할 수 있습니까?
  • reference 가 실제 참조 인 경우 쿼리에 사용할 수 있습니까? 예를 들어 userId를 텍스트 필드에 저장하는 대신 사용자를 직접 가리키는 참조를 가질 수 있습니까? 이 사용자 참조를 쿼리에 사용할 수 있습니까?

Firestore에서 참고 문헌을 사용하여 저에게 효과적이었던 것을 아래에 추가하십시오.

다른 답변에서 말한 것처럼, 그것은 외래 키와 같습니다. reference 속성은 참조 문서의 데이터를 반환하지 않습니다. 예를 들어 제품의 속성 중 하나 인 userRef 참조가있는 제품 목록이 있습니다. 제품 목록을 얻으면 해당 제품을 만든 사용자의 참조를 얻을 수 있습니다. 하지만 그 참조에 사용자의 세부 정보를 제공하지는 않습니다. 나는 그 포인터가있는 서비스로서 다른 백엔드를 사용했다. "populate : true"플래그는 사용자의 참조 ID 대신 사용자의 정보를 되돌려 준다. 여기에있는 것이 좋을 것이다. (희망적으로 미래의 개선 ).

다음은 내가 참조를 설정하고 제품 목록을 가져 와서 주어진 사용자 참조 ID에서 사용자 세부 정보를 가져 오는 데 사용했던 몇 가지 예제 코드입니다.

컬렉션에 대한 참조 설정 :

let data = {
  name: 'productName',
  size: 'medium',
  userRef: db.doc('users/' + firebase.auth().currentUser.uid)
};
db.collection('products').add(data);

컬렉션 (제품) 및 각 문서의 모든 참조 (사용자 세부 정보) 가져 오기 :

db.collection('products').get()
    .then(res => {
      vm.mainListItems = [];
      res.forEach(doc => {
        let newItem = doc.data();
        newItem.id = doc.id;
        if (newItem.userRef) {
          newItem.userRef.get()
          .then(res => { 
            newItem.userData = res.data() 
            vm.mainListItems.push(newItem);
          })
          .catch(err => console.error(err));
        } else {
          vm.mainListItems.push(newItem);  
        }

      });
    })
    .catch(err => { console.error(err) });

희망이 도움이


참조는 외래 키와 매우 비슷합니다.

현재 출시 된 SDK는 다른 프로젝트에 대한 참조를 저장할 수 없습니다. 프로젝트 내에서 참조는 다른 컬렉션의 다른 문서를 가리킬 수 있습니다.

필터링, 순서 지정 및 페이징 (startAt / startAfter)과 같은 다른 값과 같은 쿼리에서 참조를 사용할 수 있습니다.

SQL 데이터베이스의 외래 키와 달리 참조는 단일 쿼리에서 조인을 수행하는 데 유용하지 않습니다. 종속 조회 (like join)처럼 사용할 수 있지만, 각 홉 (hop)이 서버로 또 다른 왕복 여행을하게되므로주의해야합니다.





google-cloud-firestore