1

我想知道是否有一种方法可以只检索一次文档,并避免与数据库进行各种双向同步。

Polymerfire 文档很差,我找不到。

谢谢

4

2 回答 2

4

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

Polymer({
  is: 'my-element',
  attached: function() {
    firebase.database().ref('/path/to/doc')
      .once('value').then(snap => this.data = snap.val());
  }
});
于 2016-10-26T21:23:47.690 回答
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,并且我需要检查是否加载了数据以禁用 Paper-spinner,这样它就不会在我的代码中造成不必要的复杂性。

于 2016-12-21T21:11:14.687 回答