如何将数据从服务器端(DB调用)Meteor方法呈现到模板Meteor

时间:2016-06-21 10:22:57

标签: node.js templates meteor meteor-blaze

我在我的一个项目中使用Meteor,我只需要在meteor模板上显示数据说inventory.html。我在服务器端有一个方法来查询并从mongoDb获取数据。我从客户端调用服务器端方法并在客户端获取所有数据,但是到客户端的数据需要花费一些时间来渲染模板而没有任何值,所以我将如何显示模板或任何技术,以便我可以显示我的价值观或数据。

目前我正在使用服务来设置和获取数据,即testService。

var testservice = require('./TestService');

Template.allInventory.rendered = function() {


Template.allInventory.helpers({
 productDetails: function() { 

    return testservice.getData();
}
})
}

channels.js我在哪里设置来自DB的数据

var testservice = require('./TestService');
Template.channels.rendered = function(){

    Meteor.call('getDetialsFromDB',function(err, res){
    if(res){
        console.log("res is...getAllProductDetail.."+res);
        testservice.setData(res);
    }
    if(err){
        console.log("Error while calling getAllProductDetail");
    }
})

如果我在不使用服务的情况下调用上述方法,而不是使用任何数据渲染模板,因为来自后端的数据需要花费一些时间,如:

Template.allInventory.rendered = function() {
Template.allInventory.helpers({
 productDetails: function() { 
 var data;
Meteor.call('getDetialsFromDB',function(err, res){
    if(res){
        console.log("res is...getAllProductDetail.."+res);
        data = res;
    }
    if(err){
        console.log("Error while calling getAllProductDetail");
    }
})
   return res;
}
})

所以我只想渲染我的数据来自客户端的Meteor。服务器端调用方法之一,或者请举一个例子

任何帮助都会得到满足! 感谢

2 个答案:

答案 0 :(得分:0)

您可以使用SSR Package进行服务器端渲染。

答案 1 :(得分:0)

Template.someTemplate.onCreated(function(){
 this.someVar = new ReactiveVar(null)
 let self = this
 Meteor.call('someMethod',function(err,res){
  if(!err){
   self.someVar.set(res)
  }  
 })
})

我们将meteor方法的结果捕获到反应变量中,以便执行辅助函数,直到方法检索结果为止 现在制作助手以获得流星方法的结果

Template.someTemplate.helpers({
 getSomeVar:function(){
  if(Template.instance().someVar.get())
   return Template.instance().someVar.get()
  }
})