首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进流星数据处理

如何改进流星数据处理
EN

Stack Overflow用户
提问于 2015-04-15 13:01:22
回答 2查看 95关注 0票数 0

仍然在我的流星应用程序,我想现在如何改善我的数据处理从最小。

习惯于SQL / PHP,我想知道如何从minimongo集合中只找到一次对象,并使用帮助器访问它的每个属性,而不必每次都重新访问集合。

直到现在,我所做的都是这样的:

代码语言:javascript
复制
Template.profile.helpers({
  name: function(e, tmpl){
    return Meteor.users.FindOne({_id: Meteor.userId()}.profile.name;
  },
  phone: function(e, tmpl){
    return Meteor.users.FindOne({_id: Meteor.userId()}.profile.phone;
  }

( });

但是它越来越无聊了,我想一定有一种更有效的方法来处理它,在这种情况下,我可以只加载整个用户的信息一次,然后用一个带有一个参数的助手来显示这样的数据:{ data name}},{data phone}

只有一个这样的帮手:

代码语言:javascript
复制
Template.profile.helpers({
  data: function(aString){
    if (aString == "phone)
      return [...].phone;
    }
  }
[...]
});

当然,我可以使用会话值,但我不确定它是否与我所能做的相关。

另一件事:如何结束流星会议?因为使用PHP,会话在浏览器关闭时结束,cookie在给定的时间内停留,但是对于流星会话,我从来不需要每天重新连接,因为我的日志似乎仍然存在。

有人会指导我解决这个问题,还是给我一些好的习惯/建议?我还在读医生,但它很大:

谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-15 13:54:19

这里要注意的是--当您在客户端上调用Mongo.Collection.find()时,实际上并不是向服务器发送请求--这是由客户机上的miniMongo实例处理的,所以它并不是那么低效。而且,在这个特定的实例中,当前用户总是可以作为Meteor.user()使用--不需要使用Meteor.users.find({_id: Meteor.userId()}); (更多信息请参见文档 )。

但是,如果您真的想缓存该值,您可以这样做:

代码语言:javascript
复制
// JS
var data; // scoped so it's available to the whole file

Template.profile.onCreated({
    data = Meteor.users.findOne({_id: Meteor.userId()}); // above scope makes this new definition available to the whole file
});

然后,要做你用字符串参数描述的事情,你可以做一些事情,比如.

代码语言:javascript
复制
Template.profile.helpers({
    data: function(aString) { 
      if (data) { return data[aString]; }
    }
});

也许更好的选择甚至是向模板发送数据上下文--类似于HTML文件中的如下内容:

代码语言:javascript
复制
{{> profile currentUser}} <!-- currentUser returns Meteor.user() -->

,您的助手可以直接使用它作为this

代码语言:javascript
复制
Template.profile.helpers({
  data: function(aString) { 
    return this[aString];
  }
});

如果将数据上下文用于路由,也可以传递数据上下文通过IronRouter

对于Meteor会话,模型与PHP的模型不同。在PHP中,您将会话信息存储在服务器上,每次访问服务器时,浏览器(或者更一般的客户端)都会发送会话ID,以便它能够查找与会话相关的任何内容(请参阅这个问题以获得更好的解释)。Meteor跟踪连接到它的客户端,因此只要您的浏览器打开,会话就会保持打开状态。如果您需要操作Meteor用户会话,请查看这个问题

票数 0
EN

Stack Overflow用户

发布于 2015-04-15 13:51:24

我建议在大气中找到收集助手的包。这将使您能够在模板中编写currentUser.name,并且它将自动返回用户名称助手函数返回。

像这样工作没有问题。函数是否被多次调用并不重要。它不会损害您的应用程序的性能。

PHP和流星会话是不同的。流星会话可持续很长时间,只要浏览器窗口仍然打开或页面被刷新。你是对的,流星会议不是解决你的问题的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29650970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档