我想知道是否有一种方法可以只检索一次文档,并避免与数据库进行各种双向同步。
Polymerfire 文档很差,我找不到。
谢谢
我想知道是否有一种方法可以只检索一次文档,并避免与数据库进行各种双向同步。
Polymerfire 文档很差,我找不到。
谢谢
不,该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());
}
});
我找到了另一个解决方案。您可以检查数据是否已加载,然后在 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,这样它就不会在我的代码中造成不必要的复杂性。