Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sailsjs Geospatial Solution with Waterline

It seems like Sailsjs/Waterline does not currently support a POINT type or geospatial indexing with JSON.

Are there any ways to customize a schema for certain adapters to support geospatial datatypes?

If not, is there a way to integrate a second ORM into Waterline that does so?

like image 377
gtg092x Avatar asked Jan 08 '14 19:01

gtg092x


1 Answers

In Sails.js, you need MongoDB (npm install --save sails-mongo) for geospatial indexing, plus you need to ensure the 2dindex gets created in config/bootstrap.js as such (make sure to replace modelname and attributename for your particular needs):

module.exports.bootstrap = function(cb) {

  // Ensure we have 2dsphere index on coordinates attribute of Place.
  sails.models.modelname.native(function (err, collection) {
    collection.ensureIndex({ attributename: '2dsphere' }, function () {

    // It's very important to trigger this callback method when you are finished
    // with the bootstrap!  (otherwise your server will never lift, since it's waiting on the bootstrap)
    cb();

    });
  });

};

Also note that you have to use native MongoDB geospatial queries, which is beyond the scope of your question. I've posted an example implementation here

like image 190
PascalAnimateur Avatar answered Oct 04 '22 03:10

PascalAnimateur