如何在Sequelize ORM中插入PostGIS几何点?

我想在Sequelize.js ORM中有一个几何列的表中插入一行。 我有纬度,经度和高度,需要先将它转换为一个点,然后才能将其作为几何体插入。

执行转换的PostGIS存储过程是

ST_MakePoint( longitude, latitude, altitude ) 

插入一行我正在使用sequelize model.create函数

 models.Data.create({ location: "ST_MakePoint("+request.params.lon+", "+request.params.lat+", "+request.params.alt+")", // PSUEDO code, How can I call this function? speed: request.params.spd, azimuth: request.params.azi, accuracy: request.params.acc }); 

现在我想要做的是当我插入字段location返回"ST_MakePoint("+request.params.lon+", "+request.params.lat+", "+request.params.alt+")"该行。

我怎样才能做到这一点?

在l0oky的答案上进行扩展, 集成testing对于如何使用具有不同types几何的json有很多好的线索。 基本上看来,sequelize会将提供的几何对象串联起来,假设它是有效的GeoJSON,并将其传递到PostGIS函数ST_GeomFromGeoJSON中。 因此,可以按照几何对象的GeoJSON规范 。

要点:

 var point = { type: 'Point', coordinates: [39.807222,-76.984722]}; User.create({username: 'username', geometry: point }).then(function(newUser) { ... }); 

线串:

 var line = { type: 'LineString', 'coordinates': [ [100.0, 0.0], [101.0, 1.0] ] }; User.create({username: 'username', geometry: line }).then(function(newUser) { ... }); 

多边形:

 var polygon = { type: 'Polygon', coordinates: [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]}; User.create({username: 'username', geometry: polygon }).then(function(newUser) { ... }); 

设置一个自定义的SRID:

 var point = { type: 'Point', coordinates: [39.807222,-76.984722], crs: { type: 'name', properties: { name: 'EPSG:4326'} } }; User.create({username: 'username', geometry: point }).then(function(newUser) { ... }); 

经过一番研究,我发现Sequelize 3.5.1(支持GEOMETRY)已经插入了一个Point的testing 。

 var point = { type: 'Point', coordinates: [39.807222,-76.984722] }; return User.create({ username: 'user', email: ['foo@bar.com'], location: point}) 

哪里location是GEOMETRY领域。 这种方式我不需要手动调用ST_MakePoint ,sequelize照顾。