Я пытаюсь создать чат с Firebase-> firestore с веб-интерфейсом, и поэтому я пытаюсь оживить его с помощью onSnapshot, чтобы пользователи могли получать сообщения, если у них открыт чат.
Я структурировал базу данных noSQL следующим образом:
У меня есть коллекция с именем Chats, в этой коллекции у меня есть документы, имена документов представляют собой хэш отношений между двумя пользователями, который также хранится в моем SQLбаза данных, я думаю, что я буду использовать это в качестве идентификатора.
В каждом документе есть коллекция с именем 'разговоры, которые будут содержать все чаты между двумя пользователями.
Если я слушаю документ, который имеет определенный идентификатор в первой коллекции'чаты', я получу журнал в своей консоли, если я изменю поле, например 'timestamp', чтобы эта часть работала.
db.collection('chats').where(firebase.firestore.FieldPath.documentId(), '==', '#randomHASH').onSnapshot((snapshot) => {
let changes = snapshot.docChanges();
console.log('CHANGES');
console.log(changes);
changes.forEach(change => {
console.log(change.doc.data());
})
});
Но как мне прослушать собранные "разговоры" внутрицелевой документт? Я хотел бы получать журнал каждый раз, когда новый документ добавляется или редактируется в целевом документе
Я пытался, но это не похоже на хитрость:)
db.collection('chats').where(firebase.firestore.FieldPath.documentId(), '==', '#randomHASH').collection('conversations').onSnapshot((snapshot) => {
let changes = snapshot.docChanges();
console.log('CHANGES');
console.log(changes);
changes.forEach(change => {
console.log(change.doc.data());
})
});
И вот как я начинаю Firebase
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/7.1.0/firebase-app.js"></script>
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/7.1.0/firebase-firestore.js"></script>
<!-- TODO: Add SDKs for Firebase products that you want to use
https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/7.1.0/firebase-analytics.js"></script>
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "xxxxxxxxx",
authDomain: "myapp-xxxxx.firebaseapp.com",
databaseURL: "https://myapp.firebaseio.com",
projectId: "myapp-xxxxx",
storageBucket: "myapp-xxxxx.appspot.com",
messagingSenderId: "xxxxxxxxx",
appId: "1:xxxxx:web:xxxx",
measurementId: "x-xxxxxx"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
firebase.analytics();
const db = firebase.firestore();
</script>