Number key in cacher breaks when maxParamsLength is set and keys are specified
leiyangyou opened this issue · 0 comments
leiyangyou commented
Current Behavior
when cacher has maxParamsLength set, if the action also specifies a keys array say ["id"], and the id is of type number, the cacher crashes upon key generation, as hashkey will pass id to crypto.createHash, the length check fails because
1.length < maxLength always fails
the following patch does the trick for now
diff --git a/node_modules/moleculer/src/cachers/base.js b/node_modules/moleculer/src/cachers/base.js
index 3cee84a..06ece92 100644
--- a/node_modules/moleculer/src/cachers/base.js
+++ b/node_modules/moleculer/src/cachers/base.js
@@ -232,7 +232,7 @@ class Cacher {
return (
keyPrefix +
this._hashedKey(
- isObject(val) ? this._hashedKey(this._generateKeyFromObject(val)) : val
+ isObject(val) ? this._hashedKey(this._generateKeyFromObject(val)) : String(val)
)
);
}
@@ -248,7 +248,7 @@ class Cacher {
(i ? "|" : "") +
(isObject(val) || Array.isArray(val)
? this._hashedKey(this._generateKeyFromObject(val))
- : val)
+ : String(val))
);
}, "")
)