0

我在尝试使用 polymerfire 聚合物元素将数据按需推送到 Firebase 数据库时有点卡住了。我在 DOM 元素中有一个数据绑定,它可以完美地用于已经存在的寄存器。我真正的问题是如何创建具有唯一 ID 的新寄存器?

//firebase query for a specific path and a data binding
<firebase-query
   id="query"
   app-name="testApp"
   path="/[[uid]]/messages"
   data="{{data}}">
</firebase-query>

//dom repeat for each item inside the data binding
<template is="dom-repeat" items="{{data}}">
   <div class="card">
      <p>[[item.text]]</p>
   </div>
</template>

如果我将模板修改为具有铁输入和 2 路数据绑定,则可以轻松更新寄存器并且在 Firebase 中没有问题。

<template is="dom-repeat" items="{{data}}">
   <div class="card">
      <input is="iron-input" bind-value="{{item.text}}">
   </div>
</template>

真正棘手的部分是如何将新对象(消息)推送到具有唯一 ID 的 Firebase,例如"lasdjlkadj1978kld"

//firebase estructure
{
   "uid" : {
      "messages" : {
         "message1" : {
            "message" : "some text",
            "timestamp" : "some date"
         },
         "message2" : {
            "message" : "some text",
            "timestamp" : "some date"
         }
         ...
         ...
      }
   }
}

我曾尝试通过 JS 更新“数据”对象,但它只是在本地修改...

4

1 回答 1

4

我不确定我是否正确理解了您的问题。

如何创建具有唯一 ID 的新寄存器?

您可以使用带有 2 个参数 parentPath 和 keyfirebase-document的提供save方法(只需留下密钥)。

<firebase-document id='document'
  data='{{data}}'>
</firebase-document>

<script>
  Polymer({
    saveMessage: function () {
      // path = /<uid>/messages in your case
      this.$.document.save(path).then(function () {
        // after document saved, path will be changed to the new ref
        // any change of data will sent back up and stored
      });
    }
  });
</script>

我曾尝试通过 js 更新“数据”对象,但它只在本地修改...

你是怎么更新的data,你用了this.set吗?

于 2016-07-26T16:18:45.980 回答