在meteorjs中获取会话变量的值

时间:2016-06-28 14:49:42

标签: meteor

当我使用

设置会话变量时
Session.set('location',position);

设定后,当我尝试

Session.get('location')

通过控制台,我得到一个空对象

我甚至使用

添加了会话
meteor add session
meteor add constellation:session

但即使它设定了值

,它仍然没有给出任何价值

我用过它:

Meteor.startup(function () {
    navigator.geolocation.getCurrentPosition(successCallbk);
});

successCallbk = function(position) {
    Session.set('location',position);
};

在successCallbk方法中收到的位置参数具有有效值,但不会保留在位置会话var

3 个答案:

答案 0 :(得分:1)

首先尝试对其进行硬编码。

Session.set(' testSession','这是一个测试')

为您的模板设置Session.Get。

查看是否可以将其显示在模板中。进入浏览器控制台并将会话设置为其他内容,看看它是否有效。

如果这样可行,您可能需要提供更多代码才能查看。

答案 1 :(得分:0)

Session在客户端上提供了一个全局对象,可用于存储任意一组键值对。用它来存储列表中当前所选项目之类的内容。

您应该尝试验证您是否在客户端:

if (Meteor.isClient) {
  Meteor.startup(function () {
    navigator.geolocation.getCurrentPosition(successCallbk);
  });
  successCallbk = function(position) {
    Session.set('location',position);
  };
};

答案 2 :(得分:0)

我知道你发布这个问题很长一段时间后我决定使用Josh的视频作为Meteor的参考资料,我发布了我的解决方案:

success = function(position) {
    Session.set('location', {
        'coords': {
            'accuracy': position.coords.accuracy,
            'latitude': position.coords.latitude,
            'longitude': position.coords.longitude
        },
        'timestamp': position.timestamp
    });
}

基本上,我只是从位置对象复制了对我来说很重要的对象值。它现在按预期工作。 以供参考: https://www.youtube.com/watch?v=7iqdkVwtuvg