【问题标题】:Meteor publications auth error or this.readyMeteor 发布 auth 错误或 this.ready
【发布时间】:2016-09-08 13:15:22
【问题描述】:

如果未经身份验证的用户尝试订阅发布,我应该在我的发布方法中抛出错误,还是应该返回 this.ready() 。 (在咖啡脚本中)

这个:

Meteor.publish "secretInfo", ->
  return @error(new Meteor.Error(422, "Permission denied")) unless @userId

  return Secrets.find({})

或者那个:

Meteor.publish "secretInfo", ->
  return @ready() unless @userId

  return Secrets.find({})

【问题讨论】:

  • 您可以选择其中任何一种,但我建议您只使用this.ready() 以避免 UI 中出现虚假错误。假设您只有在客户端上有用户时才订阅此出版物。

标签: meteor coffeescript


【解决方案1】:

普遍接受的解决方案是后者:

return @ready() unless @userId

我尽量避免在发布中抛出错误,因为 UI 可能(取决于您如何实现它)卡在加载状态,除非您的发布者最终调用 ready()(显式或隐式,如果您返回光标或其他有效值)。

the guide中也指出了这一点:

对于注销的用户,我们显式调用 this.ready(),它向订阅指示我们已经发送了我们最初要发送的所有数据(在这种情况下没有)。重要的是要知道,如果您不从发布中返回游标或调用 this.ready(),用户的订阅将永远不会准备好,他们可能会永远看到加载状态。

【讨论】:

    猜你喜欢
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多