firebase - 一个生成的链式推送 key

标签 firebase firebase-realtime-database

有没有办法让.push() || .push().key 为链式 .push() 生成一个 key ?

function saveItem(){
  const itemId = ref.push().key;
  let newItem = {id: itemId}

  ref.child(`items`)
      .push(newItem)
      .then(() => ref.child(`users/${uid}/items`)
      .push(itemId)
}

在上面的示例中,即使有 itemId 变量,我也会生成 3 个不同的 key 而不是生成一个。

最佳答案

每次 push() 调用都会创建一个新 ID。调用三次的链式推送将创建三个唯一的 id。所以你只需要使用它一次就可以获得唯一的 id。然后如果你想写到某个地方(在你的例子中是'items/id')你可以使用set()update()。 Set 将覆盖给定位置的所有数据。虽然更新将只更新较低级别键的所需字段。示例如下:

function saveItem(){
  let ref = firebase.database().ref();
  const itemId = ref.child('items').push().key;
  let newItem = {some: data}

  ref.child(`items/${itemId}`)
      .set(newItem)
      .then(() => {
         let updates = {};
         updates[`/items/${itemId}/someField`] = newData;
         ref.update(updates);
       });
}

关于firebase - 一个生成的链式推送 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44074406/

相关文章:

android - 一次查询多个 ID 的 Google Firestore

node.js - 如何使用 firebase-admin 删除数据?

java - 为什么不显示进度对话框?

javascript - 类型错误 : Cannot read property 'name' of undefined in Firebase Function after upgrading to Node 10

ios - 如何将数据存储到 Firestore 中具有相同 ID 的多个集合?

node.js - 是否有 Firebase Cloud Function 来捕获用户配置文件的更改事件

ios - 用 firebase 数据库和存储填充 TableView ?

ios - 快速代码的 Firebase 错误

AngularJS HTML5Mode

javascript - dom-repeat Polymer 中的 Firebase 数据