在第二次推送中使用Firebase Push键作为键

时间:2017-01-02 08:04:15

标签: javascript firebase polymer firebase-realtime-database

我正在尝试将两个相关项添加到Firebase数据库中。我想推送一个项目,然后获取该项目的新创建的密钥,并将其用作另一个树中第二个项目的密钥。我已经尝试查询数据库以获取最后一个密钥并将其用作第二次推送的密钥,但它仍然只是为它生成一个新密钥。这是我正在使用的代码:

save: function() {
    if (this.$.document.isNew && (this.editableCard.title || this.editableCard.body)) {
        return this.$.document.save(this.cardsPath).then(function() {
            this.$.document.reset();
            var sceneRef = firebase.database().ref().child(this.cardsPath);
            var scene = sceneRef.orderByKey().limitToLast(1);
            var sceneKey = scene.key;
            this.$.document.save('/documents/', sceneKey);
        }.bind(this));
    }
    return Promise.resolve();
}

(我正在使用Polymer,我的出发点是Polymerfire的note-app演示)。

关于如何检索第一次推送的新密钥并将其用于第二次推送的任何想法?谢谢!

修改

我在Firebase的文档中找到了答案,用于读取和写入Web数据库。 Link

2 个答案:

答案 0 :(得分:1)

push()立即返回DatabaseReference。您可以使用getKey()询问该引用的关键字,然后使用该字符串更新数据库中的其他位置。

答案 1 :(得分:0)

您可以访问原始数据库引用上的属性,并将其用作第二个属性的键,如下所示:

let firstObjRef = firebase.database().ref('/first/path/).push(firstObj, (error) => {
  videoObj["roomUploadedTo"] = this.roomName;
  var updateObj = {};
  updateObj[videoObjRef.key] = videoObj;

  firebase.database().ref('/second/path/').update(updateObj).then( (e) => {
    console.log('update went through. booyah! ' + e);
  })