diff --git a/lib/util.js b/lib/util.js index a43a182..956b7bf 100644 --- a/lib/util.js +++ b/lib/util.js @@ -27,12 +27,15 @@ export const updateFiltered = (collection, query, data, multi) => { let i = collection.length - 1; loop: for (i; i >= 0; i--) { const c = collection[i]; + var addThis = true; for (var p in query) { - if (p in c && c[p] == query[p]) { - collection[i] = merge(c, data); - if (!multi) { - break loop; - } + if (!(p in c && c[p] == query[p])) + addThis = false; + } + if (addThis) { + collection[i] = merge(c, data); + if (!multi) { + break loop; } } } @@ -45,12 +48,15 @@ export const removeFiltered = (collection, query, multi) => { let i = collection.length - 1; loop: for (i; i >= 0; i--) { var c = collection[i]; + var rmvThis = true; for (var p in query) { - if (p in c && c[p] == query[p]) { - collection.splice(i, 1); - if (!multi) { - break loop; - } + if (!(p in c && c[p] == query[p])) + rmvThis = false; + } + if (rmvThis) { + collection.splice(i, 1); + if (!multi) { + break loop; } } }