[英]Saved an object's id in a Meteor.user field, recalled the id in a template, how can i display the object's data instead of the id?
[英]How can I prevent Meteor.user()'s timing hole?
模板要求...
if (this.userRequesting._id === Meteor.user()._id) { ... }
...检查一个人的身份。 (我怀疑这不是处理此问题的最佳方法,但我会将其保存在另一个问题中,以免使该问题不致过多)。
我的问题是,这导致了巨大的错误级联,提示Meteor.user()
是未定义的, 仅在页面加载时才存在 。一旦页面被加载,此代码将执行而不会出现问题。 显然,有一个计时漏洞(或者我认为是这样),在此时间内Meteor.user()
在页面加载时Meteor.user()
仍未分配。 将上面的代码替换为...
____________
if (Meteor.user() && this.userRequesting._id == Meteor.user()._id) { ... }
...可以解决问题,但是...... 加油 ......这不可能是犹太教。 关于模板和流星,我错误地做出了什么假设?
如果相关,我将使用accounts-password
作为我的骗子客户经理。
[编辑]:这看起来像是同样的问题 ,但是我在寻找解决方案而不是解决方法的前提下放弃了这个问题。 (我已经知道检查Meteor.user()
可以解决此问题。)
是的,您基本上是正确的。 首次刷新页面时,不认为该用户已登录,因此必须验证该用户。 但是会立即调用模板内容,然后在加载其他内容时再次调用(如果将alert
放入rendered
方法中,则会注意到这一点)。 最好的解决方案正是您的建议,尽管您可以使用Meteor.userId()
来获取ID:
if (Meteor.userId() && Meteor.userId() === this.userRequesting._id) {
// ...
您可以使用Meteor.userId()
来获取已登录用户的_id
属性,如果未登录,则为null
(我认为)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.