Дайте несколько советов, как хранить объекты с отношениями к другим объектам в firebase - PullRequest
0 голосов
/ 23 сентября 2019

3 месяца назад я перешел на js с php и mysql db.В мире JS с асинхронными запросами и хранением данных в NOsql db у меня нет опыта и шаблонов для работы.Поэтому я хочу послушать лучшие практики хранения данных.

Например, у меня есть 3 разные коллекции:

- contacts
- estate
- params

В коллекции 'estate' Я хочухранить большие объекты как документы.Объект имеет несколько свойств, и, например, массив 'contacts' , где я хочу хранить строки идентификаторов контактов, которые, по моему мнению, должны находиться в коллекции contacts, как отдельные документы.Таким образом, контакты могут выглядеть следующим образом:

contacts: ['idcontact', 'idcontact', 'idcontact' ...]

Кроме того, я хочу сохранить массив параметров, где я хочу также иметь строки с paramId, которые будут храниться как отдельные параметры в коллекции параметров.

Этот подход мне знаком, потому что я из базы данных SQL, и нет проблем получить ВСЕ необходимую информацию из разных таблиц и объединить ее в 1 запрос, что делает синхронизацию.

В мире JS сейчас я пытаюсь создать веб-приложение React, и у меня возникают проблемы с получением данных, когда компонент монтируется, например:

useEffect(() => {
     return db
       .collection('estate')
       .orderBy('created.at', 'desc')
       .onSnapshot(snapshot => {
         const docs = []
         snapshot.forEach(doc => {
           docs.push({
             ...doc.data(),
             id: doc.id
           })
         })
         /*HERE in docs array, i have all documents(as objects) from collection 'estate'. But every object in my case has arrays of contacts that has id's of contacts as strings. I want to get data about that contacts from contacts collection. Ofcourse i can make async await or promises, but imagine, if some estate will have 100 params and 10 contacts.. there will be allot of time to wait for all data*/

         setEstate(docs)
         setIsLoading(false)
       })
   }, [])

В некоторых руководствах янайденная информация, которая будет полезна для хранения в объектах, не являющихся идентификаторами в качестве ссылок на другие объекты в других коллекциях, но вместо этого хранит объекты.В этом случае я понятия не имею, если это удобно, потому что представьте себе, что я хочу обновить информацию о контакте в коллекции контактов, поэтому после этого мне нужно запросить полную базу данных, чтобы найти, где был этот контакт.документы как объект и обновить там информацию ??ааа ...

Надеюсь, мой вопрос понятен.Пожалуйста, дайте мне несколько рекомендаций или советов ..

Этот вопрос также имеет для меня особое значение, потому что у firebase нет запросов на несколько коллекций в одном запросе.Вот почему я понятия не имею, как хранить данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...