流星自动将地理位置保存到用户文档

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 或本地)的用户偏好?

将生成的 html 文档保存到 ASP.NET 中的特定文件夹

使用 NSFileWrapper 保存文档

将 NSMutableDictionary 保存到文档目录

是否可以从网站打开word文档并像从本地网络访问一样保存?

在 Parse 中保存用户地理点