Я использую Redis в своем бэкэнде для масштабирования подписок.Я использую эту библиотеку для реализации redis поверх моего кода JavaScript.И используя мангуста для моделей.
Во время публикации Redis я должен упорядочить объекты, которые я получаю от мангуста.Я анализирую их на подписывающей стороне, и все это работает хорошо, пока в объекте не появится вложенный объект, который должен быть преобразован в строку.
Итак, если мой объект такой:
{ subtitle: '',
description: '',
checklists:
[ { _id: 5cee450c0fa29d0b54275da0, items: [] },
{ _id: 5cee455c0c31785b0875e09d, items: [] },
{ _id: 5cee47dc6d32e72c6411ce2d, items: [] } ],
attachments: [],
labels: [],
_id: 5ced1af26547233798f943f6,
title: 'asfasf',
box: 5cece1c3e6c3c13ff098658d,
workflow: 5cece1cbe6c3c13ff0986591,
}
Я получаю:
{ cardUpdated:
{
subtitle: '',
description: '',
checklists: [ [Object], [Object], [Object] ],
attachments: [],
labels: [],
_id: '5ced1af26547233798f943f6',
title: 'asfasf',
box: '5cece1c3e6c3c13ff098658d',
workflow: '5cece1cbe6c3c13ff0986591',
}
}
Когда я публикую, я использую следующую строку:
pub.publish(types.CARD_UPDATED,
JSON.stringify(
{ cardUpdated: await getUpdatedCardStats(checklist.card) },
));
Примечание: я знаю, что я обертываю аргумент для stringify в {}
, и без него вложенные объекты не будут игнорироваться, но я должен сделать это, потому что мне нужно имя свойства ключа в конце подписки, т.е. я используюэта команда публикации с разными именами ключей в нескольких местах.
Есть ли способ для этого, чтобы получить вложенные объекты stringify-ed?
РЕДАКТИРОВАТЬ: Оказывается, я получил правильный полный объект в виде строки на конце подписки Redis, но на самом деле это был JSON.parse()
, который был виновником.После разбора он полностью игнорирует вложенные объекты.Есть ли способ избежать этого?