diff --git a/src/api/objects/ObjectAPI.js b/src/api/objects/ObjectAPI.js index 9e33f815c0..a0aae34ce9 100644 --- a/src/api/objects/ObjectAPI.js +++ b/src/api/objects/ObjectAPI.js @@ -233,7 +233,11 @@ export default class ObjectAPI { delete this.cache[keystring]; - result = this.applyGetInterceptors(identifier); + if (!result) { + //no result means resource either doesn't exist or is missing + //otherwise it's an error, and we shouldn't apply interceptors + result = this.applyGetInterceptors(identifier); + } return result; }); diff --git a/src/plugins/persistence/couch/CouchDocument.js b/src/plugins/persistence/couch/CouchDocument.js index e082698521..920793c6de 100644 --- a/src/plugins/persistence/couch/CouchDocument.js +++ b/src/plugins/persistence/couch/CouchDocument.js @@ -45,8 +45,7 @@ export default function CouchDocument(id, model, rev, markDeleted) { "category": "domain object", "type": model.type, "owner": "admin", - "name": model.name, - "created": Date.now() + "name": model.name }, "model": model }; diff --git a/src/plugins/persistence/couch/CouchObjectProvider.js b/src/plugins/persistence/couch/CouchObjectProvider.js index 05e022637e..754fb6d5da 100644 --- a/src/plugins/persistence/couch/CouchObjectProvider.js +++ b/src/plugins/persistence/couch/CouchObjectProvider.js @@ -215,6 +215,8 @@ class CouchObjectProvider { // Network error, CouchDB unreachable. if (response === null) { this.indicator.setIndicatorToState(DISCONNECTED); + console.error(error.message); + throw new Error(`CouchDB Error - No response"`); } console.error(error.message); @@ -379,6 +381,8 @@ class CouchObjectProvider { return this.request(ALL_DOCS, 'POST', query, signal).then((response) => { if (response && response.rows !== undefined) { return response.rows.reduce((map, row) => { + //row.doc === null if the document does not exist. + //row.doc === undefined if the document is not found. if (row.doc !== undefined) { map[row.key] = this.#getModel(row.doc); } @@ -647,6 +651,7 @@ class CouchObjectProvider { this.objectQueue[key].pending = true; const queued = this.objectQueue[key].dequeue(); let document = new CouchDocument(key, queued.model); + document.metadata.created = Date.now(); this.request(key, "PUT", document).then((response) => { console.log('create check response', key); this.#checkResponse(response, queued.intermediateResponse, key);