Firestore Web保存数据离线反馈



我正在寻找一种在离线时向我的 Firebase/Firestore 网络应用的用户提供反馈的方法。让我们看一些代码。

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);
}}
在线

:调用函数,几乎同时启动 2 个通知(缓存和在线(。

离线:调用函数,启动 1 个通知,当用户上线时,应用连续显示所有悬垂在线通知。

一种非常可接受的行为。我不会说英语,请原谅我的错误。

最新更新