Обновите объект в индексированной БД, игнорируя значение - PullRequest
0 голосов
/ 03 апреля 2019

Я написал следующий код

updatePublication(projectName, publicationId, publicationObj, callback) {
  let self = this;
  this.initDatabase(function (db) {
    let tx = self.db.transaction(self.PUBLICATIONS, self.READ_WRITE);
    let store = tx.objectStore(self.PUBLICATIONS);
    let index = store.index(self.PROJECT_NAME);

    let request3 = index.openCursor(IDBKeyRange.only(projectName));
    console.log("hrere");
    request3.onsuccess = function () {
      let cursor = request3.result;
      if (cursor) {
        let updateObject = cursor.value;
        if (updateObject.publicationID == publicationId) {
          updateObject.publicationObject = publicationObj;
          cursor.update(updateObject);
          callback(publicationId);
        }
        cursor.continue();
      } else {
        callback(publicationId);
      }
    };
  });
}

Но это дает ошибку: enter image description here

Я проверил причину ошибки. Это потому, что переданная публикацияObj имеет объект с именем _requestObjectBuilder типа Subscriber.

используется где-то в коде так: _requestObjectBuilder = интервал (1000) .pipe (tap (() => {}));

Есть ли способ изменить код updatePublication, чтобы игнорировать это значение? Поддерживает ли индексированная база данных запрос на игнорирование значения и сохранение данных?

Примечание: если я установил публикациюObj._requestObjectBuilder = undefined, данные будут сохранены в indexedDB. Но это нарушает функциональность, в которой используется _requestObjectBuilder.

1 Ответ

1 голос
/ 03 апреля 2019

Исправлена ​​проблема с клонированием объекта и установкой его на неопределенное значение

let clonedObject = Object.assign({}, publicationObject);
clonedObject._requestObjectBuilder = undefined;

Теперь я обновляю clonedObject

...