2017-10-14 3 views
1

질문, 어떻게이 쿼리를 할 수 있습니까?노드로의 Firebase 쿼리

스키마

-|conversations 
-|$uid 
    -|fromID 
     -|message 
      name: string 
      date: date 
      body: string 
      like: boolea 

사용자가 메시지의 송신기 인 경우, 추종자 conversations/$uid에 모든 모음입니다 및 다음 사용자 conversations/ANYTHING/$uid에 있습니다.

나는이 방법 this.followers = this.af.database.list(conversations/${this.currentAuth.uid});

그러나, 및 다음 사용자의 추종자를 나열 할 수 있습니다?

enter image description here

+0

fromID는 팔로우하는 사용자의 ID입니까? – Wandrille

+0

ID에서 사용자는 추종자이지만 동일한 사용자가 fromID의 다른 사용자에게 키를 삽입합니다.이 사용자는 다른 사용자의 뒤에 있습니다 –

답변

0

솔루션을 두 개의 노드를 추가했습니다. 추종자를 추적하고 각 프로파일을 따라 모든 키를 저장합니다.

1

그래서, database.list와 함께, 당신은 메시지의 배열을 얻을 설명 A를이 그림을 추가합니다.

목록의 각 메시지에 대해 추가 된 메타 데이터가 있습니다.

당신이 키를 사용하여 메시지의 키 (그래서 다음에 사용자 ID) 얻을 수 있습니다 : "$key"

예 :

const message = this.af.database.list(conversations/${this.currentAuth.uid}); 

message[0].$key는 당신에게 다음 사용자의 USER_ID을 줄 것이다.

편집 1 :

난 정말 당신이 뭘 하려는지 이해가 안 돼요. 그러나 당신이 의견에 제안 무엇을 할 것이다 :

If you use Lodash :

이 fromID 당신에게 this.currentAuth.uid 모든 대화를 줄 것이다 :

_.filter(
    this.af.database.list(conversations), 
    function (o) => { 
     return Object.keys(o).indexOf(this.currentAuth.uid) != -1 
    } 

를)

+0

mmm이 방법이 작동하는지 모르겠습니다. 스키마에서 'const message = this.af.database.list (conversations/$ {this.currentAuth.uid});'를 사용하면'사용자의 모든 대화를 this.currentAuth.uid'로 가져오고 전화를 걸면 'message [0]. $ key' 당신은 - fromID를 얻습니다. 그것은 당신의 추종자들 중 하나입니다. 뒤따른 어쩌면 다음과 같은 질문은 다음과 같습니다. 노드 대화에 'currentAuth.uid'가 fromID 매개 변수 –

+0

번에 몇 번 존재하는지 확인해야합니다. 현재 사용자의 대화를 요청하면 다음 사용자가 표시됩니다. if 당신은 묻습니다 ... 얼마나 많은 시간이 대화에서 현재 사용자가 fromID로 존재합니까? 당신은 다음 사용자를 얻을 겁니다. –

+1

당신이 말한대로 제 대답을 업데이트했습니다. – Wandrille