Sailsjs Geospatial Solution with Waterline
Asked Answered
H

2

7

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?

Hrvatska answered 8/1, 2014 at 19:47 Comment(0)
T
1

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

Tobacconist answered 30/1, 2016 at 22:32 Comment(0)
B
0

If you check the waterline documentation you can see how to create custom data types and your own validation, you can find a geospatial example here

Bug answered 9/1, 2014 at 11:56 Comment(2)
Not helpful, that example doesn't show how to do anything other than create a point. This requires .Native mongodb or a haversine formula implementationPenury
Your link is out of date. Anyone looking for how to create custom data types: take at look here: github.com/balderdashy/waterline/blob/…Sirmons

© 2022 - 2024 — McMap. All rights reserved.