From d27b6bd49d1885b385f3488c78ce4ddc392a69e2 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Sun, 7 Aug 2022 13:27:25 +0200 Subject: [PATCH] fix(xo-server/collection/redis#{add,update}): cast to string before inserting in db Fixes https://xcp-ng.org/forum/post/51933 Fixes #6359 Introduced by 36b94f745 --- packages/xo-server/src/collection/redis.mjs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/xo-server/src/collection/redis.mjs b/packages/xo-server/src/collection/redis.mjs index abe3e34f4..36eea6f63 100644 --- a/packages/xo-server/src/collection/redis.mjs +++ b/packages/xo-server/src/collection/redis.mjs @@ -8,7 +8,6 @@ import ignoreErrors from 'promise-toolbox/ignoreErrors' import isEmpty from 'lodash/isEmpty.js' import map from 'lodash/map.js' import omit from 'lodash/omit.js' -import pickBy from 'lodash/pickBy.js' import { v4 as generateUuid } from 'uuid' import Collection, { ModelAlreadyExists } from '../collection.mjs' @@ -156,13 +155,16 @@ export default class Redis extends Collection { } const key = `${prefix}:${id}` - const promises = [ - redis.del(key), - redis.hSet( - key, - pickBy(model, (value, name) => value !== undefined && name !== 'id') - ), - ] + const props = {} + for (const name of Object.keys(model)) { + if (name !== 'id') { + const value = model[name] + if (value !== undefined) { + props[name] = String(value) + } + } + } + const promises = [redis.del(key), redis.hSet(key, props)] // Update indexes. forEach(indexes, index => {