Как я могу прочитать фактические данные в хранилище IndexDB, предоставленном «workbox-background-sync»?

#indexeddb #workbox #arraybuffer

Вопрос:

Я использую «синхронизацию рабочего поля с фоном» ^5.1.4.

В моем service-worker.js Я настроил этот маршрут:

 const bgSyncPlugin = new BackgroundSyncPlugin("PATCH-que", {  maxRetentionTyime: 24 * 60, });  registerRoute(  ({ url }) =gt; {  return url.host === "XXXXXX.supabase.co";  },  new NetworkOnly({  cacheName: "supabase-PATCH",  plugins: [bgSyncPlugin],  }),  "PATCH" );  

(Есть также этот маршрут, который кэширует для того же пути):

 registerRoute(  ({ url }) =gt; {  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");  

Затем я могу получить данные запроса, предоставленные в базу данных IndexedDB с помощью workbox-background-sync, получив доступ requests[i].requestData , и body свойство имеет тип ArrayBuffer. Я уверен, что данные, к которым я пытаюсь получить доступ, находятся прямо там, но я не знаю, как сделать их читаемыми. Данные были просто обычным массивом int, прежде чем workbox сделал с ними то, что он сделал.

Комментарии:

1. К базам данных IndexedDB может получить доступ только источник, в котором они были созданы. Вы пытаетесь получить доступ к данным из другого источника? Источником, по сути, является домен, например supabase.co .