Похоже, вы пытались, но не смогли преобразовать данные из вашего предыдущего вопроса.;)
Вот предложение, это не единственный способ сделать это.
Сначала, кажется, вы хотите удалить поле id
.Вы можете сделать это в своем ReQL, используя without
:
.group(r.row('time_create').dayOfWeek()).without('id')
(Вы можете подать without('id')
до group
, оно должно работать так же, см. это для более подробной информации.)
Затем, чтобы преобразовать массив результатов (назовем его queryResult
) в объект (назовем его output
):
// prepare the skeleton of the output
let output = {
date: {}
};
// walk the result, filling the output in the process
queryResult.forEach((groupData) => {
let key = groupData.group;
if (!output[key]) {
output[key] = [];
}
output.date[key].push(...groupData.reduction);
})
Теперь у вас почти есть желаемая структура в output
, единственное, что ключи дня - это все еще числа, а не короткое название дня.По моему мнению, это должно быть обработано клиентским интерфейсом, так как вы можете захотеть использовать разные языки для своего пользовательского интерфейса.Но в любом случае, идея всегда одна и та же: наличие таблицы перевода, которая отображает числа дней в Rethink с понятными для человека названиями дней:
const translationTable = {
1: 'Mon',
2: 'Tue',
// ...
7: 'Sun'
};
Теперь, если вы делаете это в своем интерфейсе, вы просто заменяетеключи данных на лету, когда отображение необходимо (или получить ключ от названия дня, в зависимости от того, как вы отображаете вещи).В противном случае, если вы выберете внутреннюю реализацию (которая, опять же, явно не лучшее решение), вы можете изменить одну строку в приведенном выше коде (если вы уже объявили translationTable
):
let key = groupData.group;
// becomes
let key = translationTable[groupData.group];
Не стесняйтесь спрашивать в комментариях, есть ли что-то, чего вы не понимаете!