流星自动将地理位置保存到用户文档
Posted
技术标签:
【中文标题】流星自动将地理位置保存到用户文档【英文标题】:meteor automatically save geolocation to user document 【发布时间】:2015-12-10 13:12:56 【问题描述】:我想自动跟踪我页面上的用户。 它们的位置应该在 mongoDB 中进行响应式更新。 因此,我会在用户文档中添加一个新属性“位置”。 mdg:geolocation 包已经为浏览器提供的位置数据提供了一个响应源:
Geolocation.latLng();
但是,当位置发生变化时,我正在努力更新用户文档。 如何触发
Meteor.users.update(Meteor.userId(), $set: ...);
数据库更新?我尝试了以下但没有成功:
Meteor.startup = function()
Tracker.autorun(function ()
var location = Geolocation.latLng();
console.log(location);
Meteor.users.update(Meteor.userId(),
$set:
location:
type: 'Point' ,
coordinates: [location.lng, location.lat]
);
);
【问题讨论】:
你能说出你遇到了什么错误吗? 我没有收到任何错误。似乎永远不会触发跟踪器自动运行,因为 console.log(location) 不打印任何内容 【参考方案1】:现在我看到了错误。 不是:
Meteor.startup = function();
这是
Meteor.startup(function());
【讨论】:
【参考方案2】:来自http://docs.meteor.com/#/full/meteor_user:
默认情况下,服务器会发布用户名、电子邮件和个人资料 (用户可写)。
所以我认为你必须简单地改变你的代码:
Meteor.users.update(Meteor.userId(),
$set:
profile.location:
type: 'Point' ,
coordinates: [location.lng, location.lat]
);
【讨论】:
感谢您的提示。我改变了它,它肯定已经发布了,因为我从 Meteor.users.find().fetch();问题是,跟踪器永远不会被触发,因此更新不会发生。 地理定位是否启用?您是在浏览器还是移动设备上开发? 应用程序在浏览器 (Chrome) 中运行并且地理定位已开启(允许 Chrome 共享我当前的位置)。我还使用 Chrome 传感器模拟来更新位置值。 我有一个类似的地理定位代码,它可以工作。唯一的区别是我的 Tracker.autorun 不在 Meteor.startup 中以上是关于流星自动将地理位置保存到用户文档的主要内容,如果未能解决你的问题,请参考以下文章
如何读取基于 iOS 文档的应用程序的保存位置(iCloud 或本地)的用户偏好?