【问题标题】:how to get the unique id in firebase如何在firebase中获取唯一ID
【发布时间】:2018-07-23 20:47:27
【问题描述】:

我在使用 firebase 数组时遇到了很多麻烦,我现在正在使用 push

我有这个

我想把所有用户拉下来,所以我这样做:

export const pullFromFirebase = () => {
  return firebase
    .database()
    .ref("/users/")
    .once("value")
    .then(snapshot => {
      var users = [];
      snapshot.forEach(user => {
        users.push(user.val());
      });
      return users;
    });
};

这很好

但是,我现在需要 firebase 为我生成的唯一 ID -LI7d_i_BmrXktzMoe4p,以便我可以访问此记录(即用于更新和删除)我该怎么做?

【问题讨论】:

    标签: javascript arrays reactjs firebase firebase-realtime-database


    【解决方案1】:

    可以通过key属性获取快照的key:https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot#key

    所以你可以把你的代码改成这样:

    export const pullFromFirebase = () => {
      return firebase
        .database()
        .ref("/users/")
        .once("value")
        .then(snapshot => {
          var users = [];
          snapshot.forEach(user => {
            let userObj = user.val();
            userObj.id= user.key;
            users.push(userObj);
          });
          return users;
        });
    };
    

    【讨论】:

      【解决方案2】:

      你可以改变这部分:

      snapshot.forEach(user => {
        users.push(user.val());
      });
      

      改为:

      let usersObj = snapshot.val()
      for (var user_id in usersObj) {
        users.push(Object.assign(usersObj[user_id], {
          user_id: user_id,
        });
      });
      

      这样,users 数组中的每个元素都不是只有电子邮件、姓名和用户名字段,而是还有 user_id。

      【讨论】:

      • 哦,当然,很好!但我会使用传播:for (var user_id in usersObj) { users.push({ ...usersObj[user_id], id: user_id }); }
      • 其实我还有一个问题。当我进行初始推送时,它将数据推送到 firebase 但没有 id,id 仅在刷新后添加到 firebase,如何立即将自动生成的字段添加为 id 键字段?
      • @donut 我不确定我是否在关注。该 ID 仅在刷新什么后才添加到 firebase?
      猜你喜欢
      • 1970-01-01
      • 2018-09-03
      • 2016-07-31
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多