【问题标题】:Firestore web save data offline feedbackFirestore 网页保存数据离线反馈
【发布时间】:2017-11-18 12:33:17
【问题描述】:

我正在寻找一种在离线时向我的 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部分只能在线运行。我需要一些离线用户的反馈。

【问题讨论】:

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


    【解决方案1】:

    您看到的是预期的行为。本地写操作不会经常失败,因此它们没有完成处理程序。如果你想在本地写完之后再做点什么,用正常的编码逻辑放在set之后:

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

    【讨论】:

    • 但是您能绝对确定此时即使是本地写入也已完成?数据是在(未实现的)承诺返回之前写入的吗?
    • 我描述的是系统应该如何运行。如果您发现与我所说的有冲突的行为,请发帖或file a bug report。
    • 我们没有,只是好奇。很高兴知道它应该如何工作。
    • 嗨,我很难接受这种行为。问题是,我正在保存,并且在这个链的末尾我需要响应,带有 id 以保存相关数据。我没有任何反馈或被拯救的回应,我该如何完成拯救链。在其他情况下,我需要反馈,以便我可以关闭视图或做某事。可能是我在这里遗漏了一些东西。
    【解决方案2】:

    谢谢@弗兰克,@布莱克伍德。 我更改了非阻塞通知的警报。

    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个通知,当用户上线时,应用会连续显示所有待处理的在线通知。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-29
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 2015-06-29
      • 2020-05-23
      相关资源
      最近更新 更多