Структура базовых c данных в Firebase (продукт, бренды и категории) - PullRequest
0 голосов
/ 01 августа 2020

Я изучаю Firebase (Firestore) и React. Раньше я работал с PostgreSQL и Rails, поэтому для меня все выглядит иначе. Я много читал о том, как его использовать, и я могу получать данные, хранить простые данные и т. Д. c. но я совершенно не понимаю, как структурировать свои данные и правильно с ними работать. Я понимаю, что для этого не существует «единственного способа», но может ли кто-нибудь объяснить мне, как если бы вы разговаривали с настоящим новичком, как, например, структурировать следующие данные?

У меня есть продукты. У каждого товара есть название, цена, бренд и сомме продавцы (интернет-магазины, в которых продается товар). У каждого бренда может быть название, веб-сайт и множество связанных продуктов. У каждого продавца может быть имя, веб-сайт и множество связанных продуктов.

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

Коллекция товаров products collection

Brands collection brands collection

Brands - products subcollection Brands - products subcollection

Sellers collection 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;
};
...