feathers-vuex icon indicating copy to clipboard operation
feathers-vuex copied to clipboard

ReplaceItems option doesn't works when patching/updating value with null

Open J3m5 opened this issue 3 years ago • 2 comments

Steps to reproduce

If you make an update with deleted properties or a patch with properties with null values, you'll get back the new items from the api without those properties. When adding the replaceItems for the items to be completely replaced, this doesn't works because a merge is still done at the end, the items are not replaced.

Expected behavior

The replaceItems option should really replace the item.

Actual behavior

With replaceItems set to true and with an existing item, a new instance is created with the item received from the api. https://github.com/feathersjs-ecosystem/feathers-vuex/blob/0d76efdcf7c7ca35c8dda1020a5dc4ca0dc6a59d/src/service-module/service-module.mutations.ts#L88-L94

Then in the base model constructor, the mergeInstance mutation is called. https://github.com/feathersjs-ecosystem/feathers-vuex/blob/0d76efdcf7c7ca35c8dda1020a5dc4ca0dc6a59d/src/service-module/make-base-model.ts#L129-L133 Which then call the mergeWithAccessor function https://github.com/feathersjs-ecosystem/feathers-vuex/blob/0d76efdcf7c7ca35c8dda1020a5dc4ca0dc6a59d/src/service-module/service-module.mutations.ts#L124-L131

Possible solution

The mergeInstance mutation in the base model should be called only if replaceItems is not set to true.

System configuration

Module versions: 3.16.0

NodeJS version: 14.17.0

J3m5 avatar May 26 '21 12:05 J3m5

Hi, is this fix in a release?

corepay avatar Jul 01 '21 17:07 corepay

Hi, not yet @corepay Any idea when you can take a look @marshallswain ?

J3m5 avatar Jul 01 '21 20:07 J3m5