Как избавиться от первого текстового значения для настройки файла GeoJSON - PullRequest
0 голосов
/ 22 мая 2019

Я использую nodeJs и postgres для визуализации некоторых строк на веб-сайте.

Запрос возвращает коллекцию объектов geojson.На сервере я использую json_build_object для создания коллекции объектов GeoJSON.


    const a = parseInt(request.params.start)

    const  b = parseInt(request.params.end) 

    const sql = "SELECT jsonb_build_object("+
        "'type',     'FeatureCollection',"+
        "'features', jsonb_agg(features.feature)"+
    ")"+
    "FROM (" +
      "SELECT json_build_object("+
        "'type',       'Feature'," +
        "'id',         gid,"+
        "'geometry',   ST_AsGeoJSON(the_geom)::json,"+
        "'properties', json_build_object(" +
            "'cost_s', cost_s::double precision,"+
            "'length_m', length_m::double precision"+
                                      ")" +
     ") AS feature FROM _a_route(" + a + "," + b + ")) features;"

    pool.query(sql, (error, results) => {
        if (error) {
            throw error
        }

        response.send(results.rows)
    }) 
}

Однако фактические результаты выглядят следующим образом:

[{"jsonb_build_object":{"type":"FeatureCollection","features":[{"id":700878,"type":"Feature","geometry":{"type":"LineString","coordinates":[[8.4896534,49.9798051],[8.4867778,49.9790802],[8.4864496,49.9790044]]},"properties":{"cost_s":88.7259786788723,"length_m":246.461051885756}},{"id":686885,"type":"Feature","geometry":{"type":"LineString","coordinates":[[8.490777,49.9800852],[8.4906598,49.9800531],[8.49052,49.9800168],[8.4903212,49.9799755],[8.4896534,49.9798051]]},"properties":{"cost_s":31.1167335538295,"length_m":86.4353709828597}}.....]}}]

Проблема заключается в {"jsonb_build_object":.Как я могу избавиться от этого?

1 Ответ

0 голосов
/ 22 мая 2019

Похоже, вы пытаетесь преобразовать форму массива объектов. Для этого вы можете использовать Array.prototype.map :

const results = {rows: [{"jsonb_build_object":{"type":"FeatureCollection","features":[{"id":700878,"type":"Feature","geometry":{"type":"LineString","coordinates":[[8.4896534,49.9798051],[8.4867778,49.9790802],[8.4864496,49.9790044]]},"properties":{"cost_s":88.7259786788723,"length_m":246.461051885756}},{"id":686885,"type":"Feature","geometry":{"type":"LineString","coordinates":[[8.490777,49.9800852],[8.4906598,49.9800531],[8.49052,49.9800168],[8.4903212,49.9799755],[8.4896534,49.9798051]]},"properties":{"cost_s":31.1167335538295,"length_m":86.4353709828597}}]}}]}

const changedShape = results.rows.map(row => row.jsonb_build_object)

console.log(changedShape)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...