在 Meteor 中保存用户位置
Posted
技术标签:
【中文标题】在 Meteor 中保存用户位置【英文标题】:Save the users location in Meteor 【发布时间】:2016-11-26 09:49:39 【问题描述】:我的问题是搜索并显示某个仪表附近的所有注册用户。在谷歌搜索了很多但没有找到好的解决方案后,我开始编写非常简单的代码(我使用 mdg:geolocation)。
main.js
// in the client side
Template.localPosition.helpers(
'getLocalPosition': function()
var currentUserId = Meteor.userId();
if( currentUserId )
var localPos = Geolocation.latLng();
return "LAT:" + localPos.lat + " LNG:" + localPos.lng;
);
在 main.html 中,我显示了一个带有 getLocalPosition
调用的“localPosition”模板。它可以工作,但在控制台面板中我有:
模板助手中的异常:TypeError:无法读取 null 的属性 'lat'
这是为什么?
【问题讨论】:
能否请您显示正文的其余部分 html 代码? jsfiddle.net/ciessesse/4Lrwjtam 我已将解决方案编辑回滚到您的问题,因为我们希望在这里为未来的读者保留问题。请在下面的答案框中添加您的答案,谢谢。 【参考方案1】:错误是因为var localPos
是null
,你应该有一个if语句来检查localPos是否有可读值:
Template.localPosition.helpers(
'getLocalPosition': function()
var currentUserId = Meteor.userId();
if( currentUserId )
var localPos = Geolocation.latLng();
if(localPos)
return "LAT:" + localPos.lat + " LNG:" + localPos.lng;
);
【讨论】:
在网页中,我看到了 lat 和 lng 值,并发出警报(localPos.lat),它显示正确的值 因为刚开始渲染你的应用时,数据可能还没有准备好,服务器向客户端发送数据需要时间。因此,您的localPos
起初可能是 null
,但后来它具有正确的值。
ty @Khang 有解决等待服务器时间的方法吗?
@user6720641 - 您是否按照 khang 的建议尝试了 locationPos 周围的 if 条件?
如果你使用.subscribe
获取数据,你可以使用handle.ready()
检查数据是否准备好,handle
是你调用.subscribe
时的返回值以上是关于在 Meteor 中保存用户位置的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Meteor 和 React 获取用户注册的 rif
Meteor:将字段的自动值设置为另一个配置文件用户 sId