Можно ли сохранить объекты HttpRequest от Angular в локальном хранилище? - PullRequest
0 голосов
/ 10 декабря 2018

В моем приложении Angular / Ionic я хочу сохранить объекты HttpRequest в локальном хранилище (используя собственное хранилище Ionic), вызываемому из http-перехватчика, при определенных условиях:

public addRequestToQueue(request) {
    let queuedRequests = [];
    this.storage.get('queuedRequests').then((requests) => {
      if(requests) {
        queuedRequests = requests;
      }
      queuedRequests.push(request);
      this.storage.set('queuedRequests', queuedRequests);
    });
  }

Но я получаю ошибки в консоли:

    Uncaught (in promise): DataCloneError: Failed to execute 'put' on 'IDBObjectStore': function () {
                _this.headers = new Map();
                Object.keys(headers).forEach(function ...<omitted>... } could not be cloned.
Error: Failed to execute 'put' on 'IDBObjectStore': function () {
                _this.headers = new Map();
                Object.keys(headers).forEach(function ...<omitted>... } could not be cloned.

Как сохранить их в локальном хранилище для последующего использования?Является ли это возможным?Может быть, какой-то метод сериализации следует использовать?

1 Ответ

0 голосов
/ 10 декабря 2018

Обновление После небольшого исследования этой ошибки я обнаружил, что обычно есть прототип или инструмент, добавляющий свойства в прототип Array, что делает невозможным копирование keys.Вы можете сослаться на следующее обсуждение github на pouchdb, где у пользователей была похожая ошибка.

Просто чтобы убедиться, что ничто больше не мешает вашему хранилищу, попробуйте закодировать запрос и отправить его в:

public addRequestToQueue(request) {
  this.storage.set('request', JSON.stringify(request));
});

Это

...