Polymerfire - 阅读文档

时间:2016-10-26 19:37:54

标签: firebase polymer firebase-realtime-database polymerfire

我想知道是否有办法只检索一次文档,并避免与数据库进行任何类型的双向同步。

Polymerfire文档很差,我找不到它。

由于

2 个答案:

答案 0 :(得分:4)

不,firebase-document元素没有'once'模式。但是,如果您已使用firebase-app初始化SDK,则可以轻松下载到底层JS SDK:

Polymer({
  is: 'my-element',
  attached: function() {
    firebase.database().ref('/path/to/doc')
      .once('value').then(snap => this.data = snap.val());
  }
});

答案 1 :(得分:0)

我找到了另一个解决方案。您可以检查数据是否已经加载,然后在firebase引用上调用off()方法,这将禁用所有侦听器。

以下是代码的重要部分:

<firebase-document id="office_document" app-name="doctor-appointment-system" path="/offices/{{profileID}}" data="{{officeData}}">
</firebase-document>


        dataNotLoaded: {
            type: Boolean,
            computed: 'computeDataAvailability(officeData)',
            observer: 'disableReference'
        }

        computeDataAvailability: function (data) {
            return Object.keys(data).length === 0;
        }

        disableReference: function (dataNotLoaded) {
            if (!dataNotLoaded) {
                this.$.office_document.ref.off();
            }
        },

我更喜欢这种方法,因为它允许我使用Polymerfire,我需要检查数据是否已加载以禁用纸张旋转器,因此它不会在我的代码中造成不必要的复杂性。