2014-01-08 9 views
7

Кажется, что Sailsjs/Waterline в настоящее время не поддерживает POINT-тип или геопространственное индексирование с помощью JSON.Sailsjs Geospatial Solution with Waterline

Есть ли способ настроить схему для определенных адаптеров для поддержки геопространственных типов данных?

Если нет, есть ли способ интегрировать второй ORM в Waterline, который делает это?

ответ

0

Если вы обратитесь к документации по ватерлинии вы можете увидеть, как создавать пользовательские типы данных и собственную проверку, вы можете найти геопространственном пример here

+1

Не полезно, этот пример не показывает, как делать что-либо, кроме создания точки. Для этого требуется .Native mongodb или реализация формулы haversine –

+0

Ваша ссылка устарела. Любой, кто ищет, как создавать пользовательские типы данных: см. Здесь: https://github.com/balderdashy/waterline/blob/4744f1edbba27921a8fea588393facc8382e4d96/README.md#customtytypes – qualbeen

1

В Sails.js, вам нужно MongoDB (НАЯ установка --save парусов -mongo) для геопространственных индексирования, а также необходимо обеспечить 2dindex будет создаваться в конфигурации/bootstrap.js как таковой (не забудьте заменить MODELNAME и Имя_атрибута для ваших конкретных потребностей):

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

 
    }); 
 
    }); 
 

 
};

Также обратите внимание, что вы должны использовать собственные геопространственные запросы MongoDB, что выходит за рамки вашего вопроса. Я опубликовал пример реализации here

Смежные вопросы