2013-07-12 6 views
3

대화를 통해 대화를 그룹화하려면 Firebase를 사용하고 싶습니다.Firebase를 사용하여 대화로 그룹을 그룹화하십시오.

  1. SELECT * FROM chat where id = 'XX' order by date

  2. SELECT * FROM chat GROUP BY id ORDER BY date

:

Chat 
- id 
- from 
- to 
- message 
- date 

나는 다음과 같은 SQL 쿼리를 구현하는 중포 기지를 사용하려면 :

나는 다음과 같은 테이블이

Firebase를 사용하여 어떻게하면됩니까?

var chatMessagesRef = new Firebase(‘MY.firebaseio.com/chat_messages/chat_id’); 
chatMessagesRef.on(‘child_added’, function(snap) { 
    console.log(snap.val()); 
}); 

을하지만 # 2 방법을 수행 할 수 있습니다

내가 그 # 1을 할 생각하고, 내가 할 수 있습니까? 또한 날짜 순서와 함께 # 1을 어떻게 할 수 있습니까? 채팅

+0

이것이 도움이 될지 모르지만 메시징 기능을 만든 방법에 대한 git 저장소가 있습니다. 박쥐를 없애지는 않겠지 만 어쩌면 당신에게 아이디어를 줄 것입니다. https://github.com/cyrilivargarcia/Messaging –

답변

2

별도의 객실로 구성 또는 채팅 대화가 다음으로 당신의 구조를 수정 고려 :

/chat_messages/<room-id>/<message-id>/<message-data> 

이 구조를 사용하여, 당신은 특정 이름을 사용하여 새로운 방/대화 ID를 만들 수 있습니다 또는 .push()을 사용하여 Firebase에서 생성 한 것을 선택하십시오. 당신이 방에 새로운 메시지를 작성 할 때마다 다음을 수행하십시오

var chatMessagesRef = new Firebase('<YOUR-FIREBASE>.firebaseio.com/chat_messages'); 
function sendMessage(roomId, message) { 
    chatMessagesRef.child(roomId).push(message); 
} 

중포 기지는 기본적으로 데이터를 쿼리하는 방법은 두 가지가 있습니다. (자세한 내용은 Firebase Blog: Denormalizing Your Data is Normal를 참조 경로 별 우선 순위에 의해을 중포 기지 푸시 ID는 자동입니다 또한

chatMessagesRef.child(roomId).limit(20).on('child_added', function(snapshot) { ... }); 

, 당신은을 제거하여, 자동으로 시간 순으로 정렬 대화에 대한 모든 메시지를 가져올 수 있습니다 : 당신은 같은 limit() 쿼리를 사용하는 대화의 n 가장 최근의 메시지를 가져올 수 있도록, 날짜순으로 정렬 생성 limit() 쿼리를 사용합니다.

아직 작성하지 않았다면 Firebase의 공식 오픈 소스 채팅 클라이언트 인 Firechat을 확인하십시오. 완벽하게 문서화 된 JavaScript 클라이언트, 데이터 구조 및 채팅 보안 규칙이 포함되어 있습니다.

+0

발신자와 수신자가 모두 액세스 할 수있는 roomId를 어떻게 생성 하시겠습니까? –

+0

@CyrilIvarGarcia 새로운 고유 한 Firebase 'push'id ('자동'id 생성)를 생성 한 다음 사용 가능한 room ids 목록을 '/ rooms'과 같은 다른 위치에 저장합니다. 이 목록에있는 ID는 발신자와 수신자 모두에게 공개/액세스 가능할 수 있습니다. –

관련 문제