我有一张位置表,其中有一个' 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编写插件来处理空间列。
答案 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;
}