У меня есть проект, использующий Angular 8 и Firebase Firestore, и я озадачен тем, как создать надлежащий интерфейс для объекта Firestore.
В проекте пользователи могут писать сообщения друг другу, следовательно в Firestore я создал коллекции следующим образом:
users/uid1/user1
users/uid2/user2
users/uid3/user3
conversations/cid1/uid1+uid2/messages/mid1
conversations/cid1/uid1+uid2/messages/mid2
conversations/cid1/uid1+uid2/messages/mid3
conversations/cid1/uid1+uid2/messages/mid4
conversations/cid2/uid1+uid3/messages/mid1
conversations/cid2/uid1+uid3/messages/mid2
Чтобы достичь отношения «многие ко многим» (один пользователь может иметь много сообщений, а одно сообщение может иметь много пользователей), документ в коллекции бесед должен выглядеть так:
let docData: IRelation = {
[message.from.uid]: {
[message.from.uid]: true,
name: message.from.name,
imageURL: message.from.imageURL
},
[message.to.uid]: {
[message.to.uid]: true,
uid: message.to.uid,
name: message.to.name,
imageURL: message.to.imageURL
}
}
Интерфейс IRelation вызывает проблему. Возможно, я нахожусь на неверном пути кодирования ... но как мне создать интерфейс Typescript для удовлетворения вышеуказанных docData?
Я сделал решение доступным на stackblitz: https://stackblitz.com/edit/angular-nn7bye