发布用户相关数据

时间:2014-11-25 12:48:53

标签: mongodb meteor

我创造了一个简单的,简约的diary app

在客户端上,我使用

Meteor.subscribe('entries', Meteor.userId());

订阅用户创建的条目(存储在mongodb集合中)。我将用户ID传递给发布功能(在服务器上):

Meteor.publish('entries', function(userID) { 
    return Entries.find({userId: userID});
});

登录后,Meteor.userId()不再是假的,因为它是一个反应性数据源。但是,相关数据尚未公布。我通过自动运行订阅功能来解决这个问题:

Tracker.autorun(function() {
    Meteor.subscribe('entries', Meteor.userId());
});

它有效,但我觉得这是一个糟糕的解决方案。

所以问题就出现了: 一般如何发布用户相关数据?必须有一种更好的方法来做到这一点,而不是将用户ID传递给publish-function。还有,不是不安全吗?

顺便说一下,我很乐意听到关于应用程序的一些反馈

1 个答案:

答案 0 :(得分:1)

您不需要从订阅中传递userId。在publish功能中,您可以使用this.userId来获取当前用户。如果用户未登录,您也可以返回一个空数组。

Meteor.publish("entries", function () {
  if (!this.userId) return [];
  return Entries.find({ userId: this.userId });
});