【问题标题】:How to get firebase id如何获取firebase id
【发布时间】:2016-12-20 17:51:06
【问题描述】:

有人知道如何获取 Firebase 唯一 ID 吗?我试过name()namekeykey()。没有任何效果。

我可以看到数据,但我不知道如何取回 id。我需要它。

//Create new customers into firebase 
function saveCustomer(email) {

  firebase.database().ref('/customers').push({
    email: email
  });

  firebase.database().ref('/customers').on("value", function(snapshot) {
    console.log(snapshot.val());
    console.log(snapshot.value.name());
  }, function(errorObject) {
    console.log("The read failed: " + errorObject.code);
  });


}

【问题讨论】:

    标签: javascript node.js express firebase firebase-realtime-database


    【解决方案1】:

    push 的调用将返回一个 Firebase 引用。如果您使用的是 Firebase 3 API,您可以从引用的key 属性中获取推送数据的唯一键:

    var pushedRef = firebase.database().ref('/customers').push({ email: email });
    console.log(pushedRef.key);
    

    推送数据的密钥在客户端生成 - 使用时间戳和随机数据 - 并且立即可用。

    【讨论】:

    • 您如何找到已经创建的 Firebase 生成的 ID?我可以访问我需要的内容并根据需要在我的页面上使用它们,但我需要知道它们都与哪个 ID 相关联。在这种情况下,我不需要创建一个新的。
    • @FiringBlanks 我认为您应该提出一个问题并在其中包含一个示例,因为很难准确理解您的意思。如有必要,请参考此答案或问题。
    • @cartant 基本上,如何在不创建新 ID 的情况下获得 ID。刚刚想通了。 snapshot.getKey() 获取当前快照的唯一 Firebase ID。首先深入到快照 (snapshot.child('score').val();) 然后在其上运行 snapshot.getKey() 将为您获取该 javascript 属性值的键(如键/值对)。我认为这就是@user3183411 正在寻找的答案。
    • 但是当您之前还需要 id 时,此方法将不起作用 - 例如将其保存在数据本身中。 Firebase 建议 // 添加具有生成 id 的新文档。 var newCityRef = db.collection("cities").doc(); --但在这种情况下,引用包含整个路径。所以需要一种不同的方法来获取 id。
    • 请参阅下面的答案以了解另一种可行的方法
    【解决方案2】:

    调用push() 将返回对新数据路径的引用,您可以使用该引用获取其 ID 的值或为其设置数据。

    以下代码将产生与上述示例相同的数据,但现在我们可以访问生成的唯一推送 ID:

    // Generate a reference to a new location and add some data using push()
    var newPostRef = postsRef.push();
    // Get the unique ID generated by push()
    var postID = newPostRef.key();
    

    Documentation.

    【讨论】:

    • 您可能想提到您的答案是针对 Firebase 版本 2 API。
    • 这个方法不行。它指出 key 不是函数。卡特的方法奏效了。
    【解决方案3】:

    但是当您还需要事先 id 时,此方法将不起作用

    • 例如将其保存在数据库本身中。

    Firebase 建议这样做:

    // Add a new document with a generated id. 
    var newCityRef = db.collection("cities").doc(); 
    

    ——出于某种原因,push() 和 key() 对我不起作用。在这种情况下,引用也包含整个路径。所以需要一种不同的方法来获取 id。

    在下面执行此操作有助于从参考中获取 id 并使用它。

    const ref = db.collection('projects').doc()
    console.log(ref.id)  // prints the unique id
    ref.set({id: ref.id})  // sets the contents of the doc using the id
    .then(() => {  // fetch the doc again and show its data
        ref.get().then(doc => {
            console.log(doc.data())  // prints {id: "the unique id"}
        })
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 2017-06-06
      • 2018-10-28
      相关资源
      最近更新 更多