Я изучаю Firebase (Firestore) и React. Раньше я работал с PostgreSQL и Rails, поэтому для меня все выглядит иначе. Я много читал о том, как его использовать, и я могу получать данные, хранить простые данные и т. Д. c. но я совершенно не понимаю, как структурировать свои данные и правильно с ними работать. Я понимаю, что для этого не существует «единственного способа», но может ли кто-нибудь объяснить мне, как если бы вы разговаривали с настоящим новичком, как, например, структурировать следующие данные?
У меня есть продукты. У каждого товара есть название, цена, бренд и сомме продавцы (интернет-магазины, в которых продается товар). У каждого бренда может быть название, веб-сайт и множество связанных продуктов. У каждого продавца может быть имя, веб-сайт и множество связанных продуктов.
Из того, что я прочитал, похоже, я должен структурировать его следующим образом: коллекция продуктов, коллекция брендов и коллекция продавцов. Вот как это выглядит в моей консоли Firestore:
Коллекция товаров
Brands collection
Brands - products subcollection
Sellers collection
The seller subcollection looks like the brands - products subcollection.
First question : Does this structure makes sense ?
Second question : As i've used references in my data, how can i access for example 'brand' or 'sellers' from each product ?
Right now, i've created the following function in my react component to get all my products :
getAllProducts() {
productsCollection
.orderBy('releaseDate', 'desc')
.get()
.then((snapshot) => {
snapshot.forEach((doc) => {
const products = firebaseLooper(snapshot);
const brand = '';
const sellers = [];
console.log(doc.data());
this.setState({
products,
});
});
})
.catch((e) => {
console.log(e);
});
}
When i console.log(doc.data());
, i can see all my data correctly. But how do i access the brand values and sellers values in a readable format ? Right now, it looks like this :
console.log (сделать c .data ())
Поэтому я не могу использовать, например, doc.data().brand
.
Я пытаюсь достичь простого приложения, в котором у вас есть форма для добавления нового продукта. Вы добавляете название, цену, выбираете бренд и продавцов. На странице продукта вы можете увидеть имя, цену, бренд и продавца (ов), связанных с продуктом.
РЕДАКТИРОВАТЬ: Вот как выглядит функция firebaseLooper:
export const firebaseLooper = (snapshot) => {
let data = [];
snapshot.forEach((doc) => {
data.push({
...doc.data(),
id: doc.id,
});
});
return data;
};