使用Polymer的firebase-collection更新Firebase数据

时间:2016-04-15 23:16:08

标签: javascript firebase polymer

我正在使用firebase-collection元素从Polymer应用程序中的Firebase存储库中获取对象数组。数据提取没有问题。现在我有了这些对象,如何在其中一个上更新子属性?

<firebase-collection
  id="myfb"
  location="https://dinosaur-facts.firebaseio.com/dinosaurs"
  data="{{dinosaurs}}">
</firebase-collection>

<template is="dom-repeat" items="[[dinosaurs]]" as="dinosaur">
  <h4>[[dinosaur.__firebaseKey__]]</h4>
  Height: <span>[[dinosaur.height]]</span>
  <iron-icon on-click="updateDino"></iron-icon>
</template>

...为简洁省略了聚合物样板...

updateDino: function(e) {
   var key = e.model.dinosaur.__firebaseKey__;

   // now what? 
   // tried this: e.model.dinosaur.height = 3.1415 
   // but firebase doesn't save the change. 

   // also tried various things with this.$.myfb.add but 
   // it always creates a new element

   // where's the set() method on firebase-collection?
   // something like this.$.myfb.set(key, updatedObj) would be handy.
}

2 个答案:

答案 0 :(得分:0)

您可以使用firebase文档来更新数据,它可以映射到firebase上的某个位置,如下所示:

<firebase-document
  location="https://dinosaur-facts.firebaseio.com/dinosaurs"
  data="{{dinosaurs}}"></firebase-document>
  

A是对Firebase上某处的远程文档的引用。该元素在提供的位置获取文档,并将其公开为适合深度双向数据绑定的Object。

https://elements.polymer-project.org/elements/firebase-element?active=firebase-document

答案 1 :(得分:0)

Alan在评论中指出,这与firebase-collection合作:

e.model.set('dinosaur.height', 'new value to be set')

此外,items = [[dinosaurs]]的单向数据绑定已更改为双向绑定,如items = {{dinosaurs}}。我没想到这会影响firebase耦合,但它解决了这个问题。