首页 > 解决方案 > 如何读取“workbox-background-sync”提供的 indexDB 存储中的实际数据?

问题描述

我正在使用 'workbox-background-sync' ^5.1.4。

在我的service-worker.js中,我设置了这条路线:

const bgSyncPlugin = new BackgroundSyncPlugin("PATCH-que", {
  maxRetentionTyime: 24 * 60,
});

registerRoute(
  ({ url }) => {
    return url.host === "XXXXXX.supabase.co";
  },
  new NetworkOnly({
    cacheName: "supabase-PATCH",
    plugins: [bgSyncPlugin],
  }),
  "PATCH"
);

(还有这条路线缓存获取相同的路径):

registerRoute(
  ({ url }) => {
    return url.host === "XXXXXX.supabase.co";
  },
  new NetworkFirst({
    cacheName: "supabase-GET",
  })
);

当应用程序离线时,我想查看后台同步队列中是否有更新的数据并使用它,而不是我使用的常规工作箱缓存提供的数据,这样如果用户在同步发生之前刷新,他们就会看到最新的数据. 在窗口线程中,我很容易得到这样的请求:

const db = await openDB("workbox-background-sync");
const requests = await db.getAllFromIndex("requests", "queueName");

然后,我可以通过访问获取由 workbox-background-sync 提供给 indexedDB 的 requestData,requests[i].requestData并且该body属性是 ArrayBuffer 类型。我确定我要访问的数据就在那里,但我不知道如何使它可读。在 workbox 对其执行任何操作之前,数据只是一个常规的整数数组。

标签: indexeddbworkboxarraybuffer

解决方案


推荐阅读