Firestore Web保存数据离线反馈

时间:2017-11-18 12:33:18

标签: web save offline google-cloud-firestore feedback

我正在寻找一种方法,以便在离线时向我的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部分仅在线运行。我需要为离线用户提供某种反馈。

2 个答案:

答案 0 :(得分:1)

您所看到的是预期的行为。本地写操作不会定期失败,因此没有完成处理程序。如果您想在本地写入完成后执行某些操作,只需使用常规编码逻辑并将其放在set之后:

var colRef = db.collection('collectionName').doc('anyDoc');
var setWithMerge = colRef.set({
     'value': 'someValue',
 }, {
     merge: true
 })
 alert("Value set");

答案 1 :(得分:0)

谢谢@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通知,当用户上线时,该应用程序会显示连续通知的所有在线通知。

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