Как получить данные JSON с помощью retrhinkdb - PullRequest
0 голосов
/ 28 сентября 2018

(Я не очень хороший англ.) Я использую группу, чтобы включить даты.Я хочу получить информацию в ряд.Что мне нужно сделать

.group(r.row('time_create').dayOfWeek())

json export

    [
        {
        group: 1,
        reduction: [
        {
        detail: "no",
        id: "37751c10-97ea-4a3a-b2c9-3e8b39383b79",
        order_id: "15",
        status: "Not_Delivery",
        time_create: "2018-09-23T15:25:13.141Z"
        }
       ]
      }
   ]

Я хочу изменить данные JSON на

{
  "date":
  {
    "Sun": [
      {
            detail: "no",
            order_id: "15",
            status: "Not_Delivery",
            time_create: "2018-09-28 15:25:13"
    }
    ]
  }
}

Должен ли я выдавать информацию какя хочу.

1 Ответ

0 голосов
/ 29 сентября 2018

Похоже, вы пытались, но не смогли преобразовать данные из вашего предыдущего вопроса.;)

Вот предложение, это не единственный способ сделать это.

Сначала, кажется, вы хотите удалить поле 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];

Не стесняйтесь спрашивать в комментариях, есть ли что-то, чего вы не понимаете!

...