javascript firebase实时数据库 聚合物:firebase数据库不更新使用firebase元素



firebase orderbychild (1)

按照我最初的假设(这是完全错误的) ,我认为这个行为与firebase-document元素有关,事实上,在Polymer的数据绑定系统中,行为是很好的定义

解决方案1:替换整个属性。

this.stats = {count: 2};

解决方案2:让系统知道路径绑定已更新。

this.stats.count = 2;
this.notifyPath('stats.count', this.stats.count);

解决方案3:让聚合物为您处理路径绑定的东西。

this.set('stats.count', 2);

直接从文档

这个系统“正常工作”,以至于由于被绑定到通知的定制元素属性而发生对对象子属性的改变。 但是,有时候命令式的代码需要直接改变对象的子属性。 由于我们避免了更复杂的观察机制,例如Object.observe或dirty-checking,以便在最常见的用例中实现最佳的启动和运行时性能跨平台,所以直接更改对象的子属性需要用户的合作。

具体来说,Polymer提供了两种允许将这些更改通知给系统的方法:notifyPath(path,value)和set(path,value),其中path是标识路径(相对于主机元素)的字符串。

另外还有一个Polycast ,Rob Dodson详细解释了这个东西。

我正在尝试设置与Polymer 1.0的Firebase连接:

<link rel="import" href="/bower/firebase-element/firebase-document.html">

  ...
  <firebase-document id='fstats'
    location="https://polymer-redux.firebaseio.com/stats"
    log="true"
    data="{{stats}}"></firebase-document>
   ...
   this.properties = {
       stats: {
          type: Object,
          observer: '_handleFirebaseStats',
          notify: true
       }
       ...
 _handleFirebaseStats(stats) {
     ...
 }

这里是我的firebase数据库的样子:

{
   ...
   stats: { count: 0 }
}

现在,在_handleFirebaseStats里面我收到{ count: 0 } ,那部分工作得很好。 但我也想将数据保存到Firebase。 我试过了:

this.$.fstats.set({count: 2});
this.$.fstats.set({stats: {count: 2}});
this.stats.count = 2;
// etc

无论如何,无论我在我的聚合物应用程序尝试,FireBase永远不会更新。 有关如何更新Firebase的建议?





polymer-1.0