【问题标题】:Push data to Firebase via polymerfire/firebase-query element通过 polymerfire/firebase-query 元素将数据推送到 Firebase
【发布时间】:2016-07-26 14:40:33
【问题描述】:

我在尝试使用 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 更新“数据”对象,但它只是在本地修改...

【问题讨论】:

    标签: firebase firebase-realtime-database polymer polymerfire


    【解决方案1】:

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

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

    您可以使用 firebase-document 提供的 save 方法,该方法采用 2 个参数 parentPath 和 key(只需留下 key)。

    <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吗?

    【讨论】:

    • 我不确定如何使用 firebase-document 元素,文档并没有提供太多可使用的内容,你能分享一个例子吗?
    • 我认为这个codelab 是一个很好的开始(看看他们的behavior)。我已经更新了我的答案希望有所帮助。
    • 太棒了!!! this.$.document.save(path).then 按预期工作....谢谢...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多