Firebase загрузить все данные из UID - PullRequest
0 голосов
/ 06 марта 2019

Допустим, у меня есть большой список предметов, куда пользователь может перейти, и избранные предметы по своему желанию. Эти избранные затем переходят на новый узел userLikedItems/userUID/.

При сохранении избранного я пытаюсь найти лучший способ сделать это:

Вот мой текущий дублирующий подход:

    //duplicating all the data when a user favourites an item into their own node under userLikedItems
    {
      "hwUjzftGyCgMrRgNv4Djg5F4ZCQ2" : {
        "24K Carrot" : {
          "effects" : {
            "Euphoria" : true,
            "Happy" : true,
            "Relaxing" : true,
            "Sleepy" : true
          },
          "medical" : {
            "Arthritis" : true,
            "Bipolar Disorder" : true,
            "Chronic Pain" : true,
            "Depression" : true,
            "Fatigue" : true,
            "Inflammation" : true,
            "Insomnia" : true,
            "Loss of Appetite" : true,
            "Migraines" : true,
            "PTSD" : true,
            "Stress" : true
          },
          "levels" : "18% - 24%",
          "title" : "24K Carrot",
          "titleLowercase" : "24k Carrot",
          "uid" : "24K Carrot"
        },
        "2 Pac" : {
          "effects" : {
            "Cerebral" : true,
            "Focus" : true,
            "Happy" : true,
            "Horny" : true,
            "Relaxing" : true,
            "Uplifting" : true
          },
          "medical" : {
            "Arthritis" : true,
            "Cramps" : true,
            "Depression" : true,
            "Gastrointestinal Disorder" : true,
            "Loss of Appetite" : true,
            "Migraines" : true
          },
          "levels" : "29%",
          "title" : "2 Pac",
          "titleLowercase" : "2 pac",
          "uid" : "2 Pac"
        },
      }
    }

Вот следующий подход, в котором я пытаюсь определить, является ли это лучшей практикой, чем мой нынешний подход:

   //data stored with only uid:true under user's favourites node
   {
      "hwUjzftGyCgMrRgNv4Djg5F4ZCQ2" : {
        "24K Carrot" : true,
        "2 Pac" : true,
        "Triple Take" : true,
    }

      // fetching the rest of the data inside list item
      componentDidMount() {
          firebase.database().ref('/userLikedItems').child(this.props.user.item.uid).once('value', snapshot => {
            const itemData = snapshot.val();
            this.setState({
              name: itemData.name,
              image: itemData.image,
              type: itemData.type
            });
        });
      }

Таким образом, в основном, когда элемент списка смонтирован, я вызываю этот запрос, чтобы получить остальные данные. Я беспокоюсь, что это плохая практика.

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

Я ценю все отзывы!

Приветствие.

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