NodeJS API - Перемещение возвращено JSON Родительский атрибут объекта в его собственную пару ключ-значение - PullRequest
0 голосов
/ 16 марта 2020

Я учусь делать NodeAPI и пытаюсь получить лучший язык, на котором говорят в пригороде. У меня есть следующий код, где я вызываю API, и он возвращает объект JSON, сортирует его и затем берет только те элементы topN, которые мне нужны. Ниже приведен код:

 suburbService.getTopLanguage(state, postcode, year, topN)
    .then(r => res.status(200)
        .header('Cache-Control', 'public, max-age=600')
        .json(
            _(r[0])
            .omit(['State', 'Postcode', 'Year'])
            .toPairs()
            .orderBy([1], ['desc'])
            .take(topN) // only return the number you would like
            .fromPairs()
            .value())).catch((reason) => {
        logger.error('Error in getTopLanguage', reason);
        res.status(500)
            .json(apiError(..));
    });

Возвращает следующий объект JSON, если я пытаюсь получить топ-10 языков:

    {
"P_Tot_Tot": 37975,
"POL_Tot_Tot": 25238,
"F_Tot_Tot": 19492,
"M_Tot_Tot": 18480,
"POL_CL_Tot_Tot": 14543,
"FOL_Tot_Tot": 13714,
"POL_CL_Mandarin_Tot": 11636,
"MOL_Tot_Tot": 11524,
"FOL_CL_Tot_Tot": 8314,
"FOL_CL_Mandarin_Tot": 6812
}

Проблема в том, что первые несколько атрибутов P_Tot_Tot и POL_Tot_Tot, которые не являются самими языками, но являются итогами. В идеале, я бы хотел что-то вроде этого, где я поместил бы P_Tot_Tot в его собственную индивидуальную пару ключ-значение (в основном, я хочу их вложить):

 {
{"P_Tot_Tot:": 37975},
{"F_Tot_Tot": 19492,
"M_Tot_Tot": 18480,
"POL_CL_Tot_Tot": 14543,
"FOL_Tot_Tot": 13714,
"POL_CL_Mandarin_Tot": 11636,
"MOL_Tot_Tot": 11524,
"FOL_CL_Tot_Tot": 8314,
"FOL_CL_Mandarin_Tot": 6812
}
}

Я пробовал следующее, где я использую addProperty:

suburbService.getTopLanguage(state, postcode, year, topN)
    .then(r => res.status(200)
        .header('Cache-Control', 'public, max-age=600')
        .json(
            _(r[0])
            .omit(['State', 'Postcode', 'Year'])
            ** .addProperty("P_Tot_Tot", r[0].P_Tot_Tot) **
            .toPairs()
            .orderBy([1], ['desc'])
            .take(topN) // only return the number you would like
            .fromPairs()
            .value())).catch((reason) => ...

Я также экспериментировал с .assign (), который дает мне новый, но он все еще находится на том же уровне, что и другие атрибуты.

 suburbService.getTopLanguage(state, postcode, year, topN)
        .then(r => res.status(200)
            .header('Cache-Control', 'public, max-age=600')
            .json(
                _(r[0])
                .omit(['State', 'Postcode', 'Year'])
                ** .assign(r[0], {P_Tot_Tot: r[0].P_Tot_Tot}) **
                .toPairs()
                .orderBy([1], ['desc'])
                .take(topN) // only return the number you would like
                .fromPairs()
                .value())).catch((reason) => ...

Любой в состоянии помочь мне, направляя меня к правильной функции или способу сделать это? Или даже подтверждая, возможно ли это. Данные, которые я получил, были из файла CSV, который я проанализировал.

Я потратил на это хотя бы один день, и любая помощь будет принята с благодарностью.

...