knex-postgis

by jfgodoy

jfgodoy / knex-postgis

postgis extension for knex

133 Stars 18 Forks Last release: Not found MIT License 123 Commits 14 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

knex-postgis

npm version npm downloads Build Status Dependencies Status License

Extension for use postgis functions in knex SQL query builder.

Example

This example show the sql generated by the extension.

const knex = require('knex');
const knexPostgis = require('knex-postgis');

const db = knex({ client: 'postgres' });

// install postgis functions in knex.postgis; const st = knexPostgis(db); /* or:

  • knexPostgis(db);
  • const st = db.postgis;
  • /

// insert a point const sql1 = db.insert({ id: 1, geom: st.geomFromText('Point(0 0)', 4326) }).into('points').toString(); console.log(sql1); // insert into "points" ("geom", "id") values (ST_geomFromText('Point(0 0)'), '1')

// find all points return point in wkt format const sql2 = db.select('id', st.asText('geom')).from('points').toString(); console.log(sql2); // select "id", ST_asText("geom") as "geom" from "points"

// all methods support alias const sql3 = db.select('id', st.asText(st.centroid('geom')).as('centroid')).from('geometries').toString(); console.log(sql3); // select "id", ST_asText(ST_centroid("geom")) as "centroid" from "geometries"

Currently supported functions

Define extra functions

const knex = require('knex');
const knexPostgis = require('knex-postgis');

const db = knex({ client: 'postgres' });

knexPostgis(db);

db.postgisDefineExtras((knex, formatter) => ({ utmzone(geom) { return knex.raw('utmzone(?)', [formatter.wrapWKT(geom)]); } })); //now you can use st.utmzone function in the same way as predefined functions

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.