我写了下面的代码
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);
}
};
});
}
但这会导致错误:
.PrimaryKey
我检查了错误原因。因为,所传递的publicationObj具有名为_requestObjectBuilder的对象,该对象的类型为Subscriber。
在如下代码中使用: _requestObjectBuilder = interval(1000).pipe(tap(()=> {}));
有什么办法可以修改我的updatePublication代码以忽略此值? 索引数据库是否支持忽略值和保存数据的查询?
注意:如果我设置publicationObj._requestObjectBuilder = undefined,则数据将保存到indexedDB。但这破坏了使用_requestObjectBuilder的功能。
答案 0 :(得分:1)
通过克隆对象并将其设置为undefined来解决此问题
let clonedObject = Object.assign({}, publicationObject);
clonedObject._requestObjectBuilder = undefined;
现在我正在更新clonedObject