Skip to content

Commit 49beef5

Browse files
authored
Fix multi record remove cache (#605)
1 parent e31183d commit 49beef5

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

lib/services/cache.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,14 @@ module.exports = function (cacheMap, keyFieldName, options = {}) {
1616
const query = context.params.query || {};
1717

1818
if (context.type === 'after') {
19-
if (context.method === 'remove') return;
19+
if (context.method === 'remove') {
20+
items.forEach(item => {
21+
const idName = getIdName(keyFieldName, item);
22+
const key = makeCacheKey(item[idName]);
23+
cacheMap.delete(key);
24+
});
25+
return;
26+
}
2027

2128
if (query.$select) return;
2229

@@ -31,6 +38,7 @@ module.exports = function (cacheMap, keyFieldName, options = {}) {
3138

3239
switch (context.method) {
3340
case 'find': // fall through
41+
case 'remove': // skip remove in before remove
3442
case 'create':
3543
return;
3644
case 'get': {

tests/services/cache.test.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,29 @@ describe('service cache', () => {
159159
cache(cacheMap, 'id')(hookBeforeSingle);
160160
assert.deepEqual(cacheMap.get(1), 123);
161161
});
162+
163+
it('NOT before multi-record remove', () => {
164+
hookBeforeMulti.method = 'remove';
165+
166+
cacheMap.set(1, 123);
167+
cacheMap.set(2, 321);
168+
169+
cache(cacheMap, 'id')(hookBeforeMulti);
170+
assert.deepEqual(cacheMap.get(1), 123);
171+
assert.deepEqual(cacheMap.get(2), 321);
172+
});
173+
174+
it('After multi-record remove', () => {
175+
hookAfterMulti.method = 'remove';
176+
177+
cacheMap.set(1, 123);
178+
cacheMap.set(2, 321);
179+
180+
cache(cacheMap, 'id')(hookAfterMulti);
181+
182+
assert.deepEqual(cacheMap.get(1), undefined, 'id 1');
183+
assert.deepEqual(cacheMap.get(2), undefined, 'id 2');
184+
});
162185
});
163186

164187
describe('Loads cache', () => {

0 commit comments

Comments
 (0)