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.
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 totrue
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-L94Then 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 themergeWithAccessor
function https://github.com/feathersjs-ecosystem/feathers-vuex/blob/0d76efdcf7c7ca35c8dda1020a5dc4ca0dc6a59d/src/service-module/service-module.mutations.ts#L124-L131Possible solution
The
mergeInstance
mutation in the base model should be called only ifreplaceItems
is not set totrue
.System configuration
Module versions: 3.16.0
NodeJS version: 14.17.0