【问题标题】:Can I cancel a Firestore write? (using offline persistence)我可以取消 Firestore 写入吗? (使用离线持久化)
【发布时间】:2018-10-31 10:08:16
【问题描述】:

例如,我不想离线同步或保留持久性以供将来写入的记录。有没有办法取消这个?

firebase.firestore().collection('test').doc('mydoc').set({value: 123});

注意:这与question 不同,因为我想取消写入,而不是缓存数据。因为我想要持久数据,但不是针对特定的写入。

例如,我发送一些数据,半小时没有互联网,页面仍然打开(在桌面上)我想取消对服务器的写入。

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    您可以使用交易。例如,如果它不成功,您可以将数据写入 SQLite db,并且您可以在获得 SQLite db 中的书面信息一段时间后重试发送它。

    【讨论】:

    • 解释一下
    • 事务链接:firebase.google.com/docs/firestore/manage-data/transactions 使用 onFailure 函数回调将您的数据保存在缓存内存中,如果需要,您可以通过某种计时器触发一个函数,该函数在一段时间后再次尝试。客户端离线时事务将失败,因此使用它时,如果用户离线,您就不会发送数据——这正是您所需要的。
    • 离线交易失败,立即取消。该问题旨在能够手动或在一段时间后取消,而不是在没有互联网的情况下
    • 没有取消已写入数据的选项,但是您可以尝试将其删除或将其写入将包含临时数据的某个表中并写入或删除它(这将是你取消)半小时后。
    【解决方案2】:

    目前无法取消写入(尚未同步到服务器)。这是一个有效的 API 请求,所以我建议你 file a feature request

    【讨论】:

    • 一定时间后不能手动将值设置为null吗?
    • 如果您设置为 null,您仍然会在服务器和其他客户端上触发 onCreate,在这种情况下,您必须超时并执行其他逻辑,完全有可能,但不是问题所在
    猜你喜欢
    • 2019-03-06
    • 2021-10-27
    • 2018-04-17
    • 2021-05-10
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多