From 1bf713c4706f2c4384bb70a10cae5e959faaef8e Mon Sep 17 00:00:00 2001 From: 0x0a0d Date: Sat, 17 Dec 2022 18:57:45 +0700 Subject: [PATCH 1/5] rename var to easily understand --- packages/moleculer-db/src/index.js | 34 +++++++++++++++--------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/moleculer-db/src/index.js b/packages/moleculer-db/src/index.js index 98ce5c54..f9b4cc95 100644 --- a/packages/moleculer-db/src/index.js +++ b/packages/moleculer-db/src/index.js @@ -566,41 +566,41 @@ module.exports = { /** * Authorize the required field list. Remove fields which is not exist in the `this.settings.fields` * - * @param {Array} fields + * @param {Array} askedFields * @returns {Array} */ - authorizeFields(fields) { + authorizeFields(askedFields) { if (this.settings.fields && this.settings.fields.length > 0) { - let res = []; - if (Array.isArray(fields) && fields.length > 0) { - fields.forEach(f => { - if (this.settings.fields.indexOf(f) !== -1) { - res.push(f); + let allowedFields = []; + if (Array.isArray(askedFields) && askedFields.length > 0) { + askedFields.forEach(askedField => { + if (this.settings.fields.indexOf(askedField) !== -1) { + allowedFields.push(askedField); return; } - if (f.indexOf(".") !== -1) { - let parts = f.split("."); + if (askedField.indexOf(".") !== -1) { + let parts = askedField.split("."); while (parts.length > 1) { parts.pop(); if (this.settings.fields.indexOf(parts.join(".")) !== -1) { - res.push(f); + allowedFields.push(askedField); break; } } } - let nestedFields = this.settings.fields.filter(prop => prop.indexOf(f + ".") !== -1); + let nestedFields = this.settings.fields.filter(settingField => settingField.indexOf(askedField + ".") !== -1); if (nestedFields.length > 0) { - res = res.concat(nestedFields); + allowedFields = allowedFields.concat(nestedFields); } }); //return _.intersection(f, this.settings.fields); } - return res; + return allowedFields; } - return fields; + return askedFields; }, /** @@ -832,10 +832,10 @@ module.exports = { return this.beforeEntityChange("create", entity, ctx) .then((entity)=>this.validateEntity(entity)) // Apply idField - .then(entity => + .then(entity => this.adapter.beforeSaveTransformID(entity, this.settings.idField) ) - .then(entity => + .then(entity => this.adapter.insert(entity) ) .then(doc => this.transformDocuments(ctx, {}, doc)) @@ -939,7 +939,7 @@ module.exports = { */ _update(ctx, params) { let id; - + return Promise.resolve() .then(()=>this.beforeEntityChange("update", params, ctx)) .then((params)=>{ From 567f11d2af2c70aa197f3d1571ba8fd0a358382a Mon Sep 17 00:00:00 2001 From: 0x0a0d Date: Sat, 17 Dec 2022 18:58:36 +0700 Subject: [PATCH 2/5] fix unsafe check --- packages/moleculer-db/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/moleculer-db/src/index.js b/packages/moleculer-db/src/index.js index f9b4cc95..f33defd2 100644 --- a/packages/moleculer-db/src/index.js +++ b/packages/moleculer-db/src/index.js @@ -590,7 +590,7 @@ module.exports = { } } - let nestedFields = this.settings.fields.filter(settingField => settingField.indexOf(askedField + ".") !== -1); + let nestedFields = this.settings.fields.filter(settingField => settingField.startsWith(askedField + ".")); if (nestedFields.length > 0) { allowedFields = allowedFields.concat(nestedFields); } From 5cb787c683135c81aeeeb2a23dc3fdf70fad7d54 Mon Sep 17 00:00:00 2001 From: 0x0a0d Date: Sat, 17 Dec 2022 19:06:15 +0700 Subject: [PATCH 3/5] should return here --- packages/moleculer-db/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/moleculer-db/src/index.js b/packages/moleculer-db/src/index.js index f33defd2..a9615a1c 100644 --- a/packages/moleculer-db/src/index.js +++ b/packages/moleculer-db/src/index.js @@ -585,7 +585,7 @@ module.exports = { parts.pop(); if (this.settings.fields.indexOf(parts.join(".")) !== -1) { allowedFields.push(askedField); - break; + return; } } } From e4c36c1b0ed071380808bdc16d0f501c7b5c7515 Mon Sep 17 00:00:00 2001 From: 0x0a0d Date: Sat, 17 Dec 2022 19:16:09 +0700 Subject: [PATCH 4/5] add test --- packages/moleculer-db/test/unit/index.spec.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/moleculer-db/test/unit/index.spec.js b/packages/moleculer-db/test/unit/index.spec.js index b7043767..1d4879a4 100644 --- a/packages/moleculer-db/test/unit/index.spec.js +++ b/packages/moleculer-db/test/unit/index.spec.js @@ -636,7 +636,7 @@ describe("Test authorizeFields method", () => { name: "store", adapter: mockAdapter, settings: { - fields: ["id", "name", "address", "bio.body"] + fields: ["id", "name", "address", "bio.body", "mobile.carrier.name"] } }); @@ -654,6 +654,11 @@ describe("Test authorizeFields method", () => { const res = service.authorizeFields(["id", "name", "bio.body.height", "bio.male", "bio.dob.year", "bio.body.hair.color"]); expect(res).toEqual(["id", "name", "bio.body.height", "bio.body.hair.color"]); }); + + it("should remove empty", () => { + const res = service.authorizeFields(["carrier"]); + expect(res).toEqual([]); + }); }); describe("Test with enabled nested fields", () => { From 11ea38523baa34069dc474f3c521c0dbede418d4 Mon Sep 17 00:00:00 2001 From: 0x0a0d Date: Sat, 17 Dec 2022 19:17:38 +0700 Subject: [PATCH 5/5] add test --- packages/moleculer-db/test/unit/index.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/moleculer-db/test/unit/index.spec.js b/packages/moleculer-db/test/unit/index.spec.js index 1d4879a4..1ed71106 100644 --- a/packages/moleculer-db/test/unit/index.spec.js +++ b/packages/moleculer-db/test/unit/index.spec.js @@ -655,7 +655,7 @@ describe("Test authorizeFields method", () => { expect(res).toEqual(["id", "name", "bio.body.height", "bio.body.hair.color"]); }); - it("should remove empty", () => { + it("should return empty", () => { const res = service.authorizeFields(["carrier"]); expect(res).toEqual([]); });