indexeddb - 如何读取“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 对其执行任何操作之前,数据只是一个常规的整数数组。
解决方案
推荐阅读
- python - Python try/except 不使用 requests.get() 捕获异常
- xslt - 在 XSLT 中的 xsl:param 中使用双引号
- angular - 在 Angular 应用程序中的事件发射器通知后成功发送网络请求的问题
- typescript - Angular 7 & Stripe 错误 TS2304:找不到名称“Stripe”
- python - 在数据框中查找具有最高均值的行
- php - 如何更新codeigniter中的记录?
- ruby-on-rails - 使用 Apartment 禁用子域
- r - 如何在 Shiny 中绘制反应元素的列
- javascript - 当用户为文本输入选择字体系列时如何触发事件?
- c# - Telerik RadAutoCompleteBox 与动态 ItemSource 问题