這裏是我的架構(簡單模式):流星 - 更新集合與位置對象(以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'
}
我的服務器端的js代碼低於(注意,這是在collection.after掛鉤),所以我想在此基礎上我已經解決到Lat Long網用戶已經輸入的地址,來更新它:
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){true};}});'。 2)我發現這個問題[鏈接](http://stackoverflow.com/questions/24492333/meteor-simple-schema-for-mongo-geo-location-data),我相信是你正在建議與子模式。但是我正在努力弄清楚現在如何更新這個對象?在@ chaosbohne的例子中,像'Providers.update({_ id:doc._id},{$ set:{loc:{type:「Point」,coordinate:{lng:22.122,lat:-122.212}}}} );'工作? –
1)是的,你必須明確地允許更新以及插入,所以'update:function(userId,doc,fieldNames,modifier)){return true;}'也需要在你的允許對象中 2 )是的,那個更新代碼應該正確地更新他所描述的模式 3)確保從客戶端更新它像'Providers.update(doc._id,{...})'。客戶端代碼通常不應該在客戶端使用對象作爲選擇器。 –
我確實有更新allower也。但是,謝謝!它奇妙地工作。感謝你的幫助。 –