Firestore web保存数据离线反馈
问题描述:
我正在寻找一种方法,以便在离线状态下为我的Firebase/Firestore Web应用程序的用户提供反馈。让我们看看一些代码。Firestore web保存数据离线反馈
var colRef = db.collection('collectionName').doc('anyDoc');
var setWithMerge = colRef.set({
'value': 'someValue',
}, {
merge: true
})
.then(function() {
alert('Success');
})
.catch(function (error) {
alert("Fail :" + error);
});
在线:调用函数,并成功警报完美的作品。
脱机:调用函数,没有任何反应。但是当用户上线时,该应用会连续显示所有警报。
总之,.then
部分代码只能在线运行。我需要为离线用户提供某种反馈。
答
你看到的是预期的行为。本地写操作不会定期失败,所以没有完成处理程序。如果你想要做的事本地写完成后,只需使用普通的逻辑编码,并把它的set
后:
var colRef = db.collection('collectionName').doc('anyDoc');
var setWithMerge = colRef.set({
'value': 'someValue',
}, {
merge: true
})
alert("Value set");
答
THX @Frank,@Blackwood。 我更改了非阻塞通知的警报。
function doSomething() {
try {
var colRef = db.collection('collectionName').doc('anyDoc');
var setWithMerge = colRef.set({
'value': 'someValue',
}, {
merge: true
})
.then(function() {
alertify.notify('Data saved online.', 'success', 5);
})
.catch(function (error) {
alert('Error: ' + error);//or
//alertify.notify('Data saved online.', 'error', 10);
});
alertify.notify('Data saved on cache.', 'warning', 5);
} catch (error) {
alert('Error: ' + error);
}}
Online:调用函数,几乎同时启动2个通知(缓存和联机)。
离线:调用该函数,启动1通知,当用户上线时,应用程序显示所有下线在线通知。
非常可以接受的行为。 我不会说英语,原谅我的错误。
但是,您能否绝对确信即使是当地的写作在这一点上已经完成了?在未履行的承诺之前写入的数据是否被返回? – DarkNeuron
我所描述的是系统应该如何表现。如果您发现与我所说的行为有冲突,请发帖或[提交错误报告](https://firebase.google.com/support/contact/bugs-features/)。 –
我们还没有,只是好奇。很高兴知道它应该如何工作。 – DarkNeuron