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 нет запросов на несколько коллекций в одном запросе.Вот почему я понятия не имею, как хранить данные