Вот моя схема (простая схема):Метеор - Обновление коллекции с объектом местоположения (в формате GeoJSON)
officelocation: {
type: String,
label: 'Location of Office',
autoform: {
type: 'map',
afFieldInput: {
type: 'map',
geolocation: true,
searchBox: true,
autolocate: true
}
}
},
location: {
optional: true,
type: 'Point'
}
Мой стороне сервера код расслоение плотной ниже (обратите внимание на это в collection.after крючок), так Я хочу обновить его на основании адреса, который пользователь вошел, который я решил в Lat долго:
Providers.update({_id: doc._id}, {$set: {location: {type:"Point", coordinates:[lng,lat]} } });
Когда я вижу файл в коллекции (db.providers.find();
), я вижу внизу .. Обратите внимание, что местонахождение внедренного объекта пуст:
{ "_id" : "X8ZfKYJAP9cduwvmd", "phone" : 999999999, "officelocation" : "40.7192714,14.872363899999982", "createdAt" : ISODate("2015-04-24T02:00:40.447Z"), "updatedAt" : ISODate("2015-04-24T02:00:40.799Z"), "owner" : "GB4TxTHodkykeeXp6", "officeaddress" : "Via Califri, 5, 84099 San Cipriano Picentino SA, Italy", "location" : { } }
Я в основном пытаюсь убедиться, что коллекции хранятся в геопространственном поиске, но этот подход не работает. Любая помощь?
Я не совсем понимаю. 1) Это должно позаботиться о разрешении вставок: 'Providers.allow ({ insert: function (userId, doc) { return true;}});'. 2) Я нашел этот вопрос [link] (http://stackoverflow.com/questions/24492333/meteor-simple-schema-for-mongo-geo-location-data), который, я считаю, является тем, что вы предлагаете с помощью подсхемы , Но я изо всех сил пытаюсь выяснить, как обновить этот объект сейчас? В примере @ chaosbohne будет что-то вроде 'Providers.update ({_ id: doc._id}, {$ set: {loc: {type:" Point ", координата: {lng: 22.122, lat: -122.212}}}}), 'работа? –
1) Да, и вы должны явно разрешать обновления, а также вставки, поэтому для вашего объекта-разрешения должен быть также объект 'update: function (userId, doc, fieldNames, modifier). {Return true;}' 2) Да, этот код обновления должен правильно обновить схему, описанную им 3) Обязательно обновите ее как «Providers.update (doc._id, {...})» от клиента. Клиентский код обычно не должен использовать объекты в качестве селекторов на стороне клиента. –
У меня также был асетер. Но спасибо! Он работает чудесно. Ценю вашу помощь. –