Тип геометрии читается как строка из БД - PullRequest
0 голосов
/ 23 июня 2019

У меня есть следующая модель с геометрическим полем:

const soiSchema = {
    siteId: {
        type: DataTypes.BIGINT,
        allowNull: false,
        primaryKey: true,
        field: 'site_id'
    },
    soiId: {
        type: DataTypes.BIGINT,
        allowNull: false,
        field: 'soi_id'
    },
    geoPoint: {
        type: DataTypes.GEOMETRY('POINT'),
        allowNull: false,
        field : 'geopoint'
    }
}

Я использую эту модель в необработанном запросе со следующими параметрами:

 await sequelize.query(query,{
        model : Soi,
        raw : true,
        bind : params,
        mapToModel: true
    })

Моя проблема: Когда я запрашиваю свою базу данных postgres, я получаю геопункт в виде строки для примера '0101000020E610000000A172ECBF844140CCC38A7B66D93F40', а не в виде точки. Поле в БД действительно имеет тип геометрии, но sequelize читает его как строку. У кого-нибудь есть обходной путь? Я пробовал много разных версий sequelize, но это не помогло решить проблему Спасибо

1 Ответ

0 голосов
/ 23 июня 2019

Попробуйте использовать правильную функцию ST_ для чтения типа данных геометрии:

SELECT ST_AsText(geoPoint) FROM your_table

https://postgis.net/docs/PostGIS_Special_Functions_Index.html

Вы можете получить lng, как

SELECT ST_X(geoPoint), ST_Y(geoPoint), ST_AsText(geoPoint) 
FROM your_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...