Meteor如何从服务器到客户端获取可变值?

时间:2016-02-10 20:51:01

标签: javascript meteor

平,

我因某种原因而陷入困境。我正在玩Arduino板,我想在客户端读取数据。

我的服务器代码是:

if(Meteor.isServer) {

  var five = Meteor.npmRequire("johnny-five");
  var board = new five.Board();

  Meteor.startup(function() {
      board.on("ready", Meteor.bindEnvironment(function() {
        var temperature = new five.Thermometer({
          controller: 'TMP36',
          pin: 'A0'
        });

        Meteor.setInterval(function() {
          console.log(temperature.celsius);
        }, 5000);
    }))
  })

}

我不想将数据保存到集合中,而是在线阅读。如何将变量temperature.celsius从服务器传递到客户端?我无法在客户端中运行代码,因为我正在使用NPM require,它只能在服务器中运行。

1 个答案:

答案 0 :(得分:3)

在Meteor.setInterval定义之后,添加:

Meteor.methods({
  temperature: function () {
    return temperature;
  },
});

然后在代码底部添加:

if (Meteor.isClient) { 
  Template.tempReport.result = function () {
    return Session.get('temperature') || ""; 
  }; 
  Template.tempReport.events = { 
    'click button' : function () { 
        Meteor.call('temperature',function(err, response) { 
            Session.set('temperature', response); 
        }); 
     } 
  }; 
}

最后在你的HTML中:

<template name="tempReport">
  <div>Temperature: {{temperature}} <button>Update</button></div>
</Template>