2014-01-08 15 views
7

Es scheint, als ob Sailsjs/Waterline derzeit keine PUNKT-Art oder Geospatial-Indexierung mit JSON unterstützt.Sailsjs Geospatial Solution mit Waterline

Gibt es Möglichkeiten, ein Schema für bestimmte Adapter anzupassen, um Geospatialdatentypen zu unterstützen?

Wenn nicht, gibt es eine Möglichkeit, ein zweites ORM in Waterline zu integrieren, die das tut?

Antwort

0

Wenn Sie die Wasserlinie Dokumentation überprüfen können Sie sehen, wie Sie benutzerdefinierte Datentypen und Ihre eigene Validierung erstellen, können Sie ein geospatial Beispiel here

+1

Nicht hilfreich, dieses Beispiel zeigt nicht, wie man etwas anderes tut, als einen Punkt zu erstellen. Dies erfordert .Native Mongodb oder eine hairsine Formel Implementierung –

+0

Ihr Link ist veraltet. Jeder, der sucht, wie man benutzerdefinierte Datentypen anfertigt: schauen Sie hier: https://github.com/balderdashy/waterline/blob/4744f1edbba27921a8fea588393facc8382e4d96/README.md#custom-types – qualbeen

1

In Sails.js finden Sie MongoDB benötigen (NPM --save Segel installieren -mongo) für Geospatial Indizierung, plus Sie müssen die 2dindex, um sicherzustellen, wird in config/bootstrap.js erstellt als solche (stellen Sie sicher, Modellname und attribut für Ihre speziellen Bedürfnisse zu ersetzen):

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(); 
 

 
    }); 
 
    }); 
 

 
};

Beachten Sie auch, dass Sie native MongoDB-Geospatialabfragen verwenden müssen, was den Rahmen Ihrer Frage übersteigt. Ich habe eine Beispielimplementierung gepostet here