Firebase从uid

时间:2019-03-06 15:45:22

标签: javascript reactjs firebase-realtime-database

比方说,我有一个很大的项目列表,用户可以去那里,也可以按自己的喜好选择项目。然后,这些收藏夹将转到新节点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节点中的所有项目数据,这意味着我不必对每个项目都执行该查询,而是直接从users节点加载所有数据-问题是我当主要项目更改时,必须使用云函数来使数据保持一致,并且我的数据库中有很多重复数据,而对于每个项目而言,它可能只是一个简单的布尔值。

感谢所有反馈!

干杯。

0 个答案:

没有答案