Javascript meteor自动将地理位置保存到用户文档
我想自动跟踪我页面上的用户。 他们的立场应该在mongoDB中进行反应性更新。 因此,我将在用户文档中添加一个新属性“location”。 mdg:geolocation包已经为浏览器提供的位置数据提供了一个反应源:Javascript meteor自动将地理位置保存到用户文档,javascript,mongodb,meteor,geolocation,Javascript,Mongodb,Meteor,Geolocation,我想自动跟踪我页面上的用户。 他们的立场应该在mongoDB中进行反应性更新。 因此,我将在用户文档中添加一个新属性“location”。 mdg:geolocation包已经为浏览器提供的位置数据提供了一个反应源: Geolocation.latLng(); 然而,当职位发生变化时,我很难更新用户文档。 我怎样才能触发 Meteor.users.update(Meteor.userId(), { $set: ...}); 数据库更新?我尝试了以下方法,但没有成功: Meteor.star
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]
}
}
});
});
}
发件人:
默认情况下,服务器发布用户名、电子邮件和配置文件
(可由用户写入)
因此,我认为您只需在以下位置更改代码:
Meteor.users.update(Meteor.userId(), {
$set: {
profile.location: {
type: 'Point' ,
coordinates: [location.lng, location.lat]
}
}
});
现在我看到了错误。
这不是:
Meteor.startup = function(){};
它是
你能说出你犯了什么错误吗?我一点也没犯错误。似乎从来没有触发过跟踪器自动运行,因为console.log(location)不会为提示打印任何内容。我更改了它,它肯定是发布的,因为我从Meteor.users.find().fetch()获得了位置;问题是,跟踪器从未被触发,因此更新不会发生。是否启用了地理定位?您是使用浏览器还是移动设备进行开发?应用程序在浏览器(Chrome)中运行,地理位置已打开(允许Chrome共享我的当前位置)。我还使用Chrome传感器模拟来更新位置值。我有一个类似的地理定位代码,它可以工作。唯一的区别是我的Tracker.autorun不在Meteor.startup内
Meteor.startup(function(){});