使用ObjectionJS插入/选择Mysql Spatial列

时间:2018-04-18 14:02:39

标签: mysql node.js spatial objection.js

我有一张位置表,其中有一个' Point' MySQL中的type列。我可以使用Knex定义它并且它正常工作。

knex.schema.createTable('locations',function(table){
  table.increments('locid').primary();
  table.string('address').notNullable();
  table.string('nick_name');
  table.specificType('loc_gis','Point').nullable();
  table.enu('loc_type',['home','office','college','other']).notNullable();
  table.timestamps();
})

但我不知道如何使用ObjectionJS选择/插入GIS Spatial数据。我是否每次都必须使用原始查询,或者无论如何都要为ObjectionJS编写插件来处理空间列。

1 个答案:

答案 0 :(得分:1)

找到答案。我的ObjectionJS模型定义中的以下代码修复了该问题。

$formatDatabaseJson(json) {
 // Remember to call the super class's implementation.
  if(json.locGis){
    json.locGis=knex.raw('point(?, ?)', 
      [json.locGis.x, json.locGis.y]);
  }
  json = super.$formatDatabaseJson(json);
  return json;
}