diff --git a/lib/index.js b/lib/index.js index 9b818e2..7537015 100644 --- a/lib/index.js +++ b/lib/index.js @@ -212,15 +212,29 @@ class Service extends AdapterService { query = Object.assign(query, { collation: params.collation }); } - const findParams = Object.assign({}, params, { - paginate: false - }); const remapModifier = this._remapModifiers(this._normalizeId(id, data)); - return this.Model.updateMany(query, remapModifier, options) - .then(() => this._findOrGet(id, findParams)) - .then(select(params, this.id)) - .catch(errorHandler); + const idParams = Object.assign({}, params, { + paginate: false, + }); + + const ids = this._findOrGet(id, idParams) + .then(result => { + const items = Array.isArray(result) ? result : [result]; + return items.map(item => item[this.id]); + }); + + return ids.then(idList => { + const findParams = Object.assign({}, params, { + paginate: false, + query: { [this.id]: { $in: idList } } + }); + + return this.Model.updateMany(query, remapModifier, options) + .then(() => this._findOrGet(id, findParams)) + .then(select(params, this.id)) + .catch(errorHandler); + }); } _update (id, data, params = {}) { diff --git a/package-lock.json b/package-lock.json index 34dedbe..b34d126 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,9 +43,9 @@ } }, "@feathersjs/adapter-tests": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/@feathersjs/adapter-tests/-/adapter-tests-4.5.2.tgz", - "integrity": "sha512-CvOqxreuM9hyyd3M5mYDUFoone/ZdX95OEewZtzyaaTutygl8s6XVOYdwzWlANuYFM12pGq0hBAQrgAszwdEqg==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/@feathersjs/adapter-tests/-/adapter-tests-4.5.4.tgz", + "integrity": "sha512-VoBCFAa2NPsEPWqblom1kkY04w1vLkumUdwmvM0nk2oPGRYU5h7gsBipMt04v8mLKR+7vLOOnTLpPod7eyhmgw==", "dev": true }, "@feathersjs/commons": { diff --git a/package.json b/package.json index 3dcceac..bc6903a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@feathersjs/errors": "^4.5.3" }, "devDependencies": { - "@feathersjs/adapter-tests": "^4.5.2", + "@feathersjs/adapter-tests": "^4.5.4", "@feathersjs/express": "^4.5.4", "@feathersjs/feathers": "^4.5.3", "@feathersjs/socketio": "^4.5.4", diff --git a/test/index.test.js b/test/index.test.js index 15cd6b6..c96db98 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -33,6 +33,7 @@ const testSuite = adapterTests([ '.patch + id + query', '.patch multiple', '.patch multi query', + '.patch multi query changed', '.patch + NotFound', '.create', '.create + $select',