我想知道是否有办法只检索一次文档,并避免与数据库进行任何类型的双向同步。
Polymerfire文档很差,我找不到它。
由于
答案 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,我需要检查数据是否已加载以禁用纸张旋转器,因此它不会在我的代码中造成不必要的复杂性。