【问题标题】:Way to efficiently add push key to pushed object. - Firebase有效地将推送键添加到推送对象的方法。 - 火力基地
【发布时间】:2017-09-02 01:05:54
【问题描述】:

在我的应用中,用户可以创建新的工作并在他们自己的 UID 下注册。

let newJobRef = firebase.database().ref(`/jobs/serviceUsers/activeJobs/${currentUser.uid}`);
newJobRef.push(job)

我知道在 promise 解决后,你会得到一个快照对象,它的按键存储为snapshot.key,如下所示:

.then(snapshot => {
  let myPushKey = snapshot.key;
  // do more stuff here
}

但是,在我的应用程序中,将此键存储在 Job 对象本身中很重要。所以我必须进行第二次往返并更新最近推送的作业以将推送键添加到它,作为键值对。

我的问题是:这是正确的方法吗?有没有其他方法可以在单程行程中将按键添加到对象? (不包括云功能)。我希望有一些保留的 firebase-syntax 或 word 会在它到达 DB 时自动执行此操作,但什么也没找到。

非常感谢您!

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    一旦您意识到push() 也可以在没有值的情况下调用,这很容易做到:

    let userRef = firebase.database().ref(`/jobs/serviceUsers/activeJobs/${currentUser.uid}`);
    let newJobRef = userRef.push();
    job.key = newJobRef.key;
    newJobRef.set(job);
    

    push() 的调用是纯粹的客户端调用,它只是生成一个具有唯一ID 的引用。对set() 的调用是将值写入此处的数据库。

    请注意,将对象的键存储在该对象中是一种反模式。虽然在程序中通常需要同时拥有键和值,但我通常通过传递快照(已经有.key.val())或在读取时将键注入对象(而不是在数据库本身中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-13
      • 2016-09-17
      • 2017-01-13
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      相关资源
      最近更新 更多