作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我使用的不是Meteor本身,而是Angular-Meteor,所以原理是一样的。我需要做的是在 helper
函数中验证资源是否有效,并根据其结果做出决定。
我认为 find
和 findOne
集合的功能在客户端是同步的,但看起来它们不是同步的,或者我以错误的方式做事。
我有以下代码:
this.helpers({
post() {
let _post = Posts.findOne({
_id: this.postId
});
if( typeof _post == 'undefined' )
return this.$state.go('404');
return _post;
}
});
this.postId
来自 Url 参数。当我浏览应用程序时,一切正常。但是当我刷新页面时, this.postId
已定义,但 Posts.find()
返回 undefined
,显然,它会转到 404 页面.
如何解决这种情况?
最佳答案
这是因为当您刷新页面时,您的 View 是在数据发送到客户端之前呈现的。要解决此问题,您需要在检查数据是否存在之前确保数据已准备好。换句话说,它的意思是检查您的订阅是否准备好,使用以下代码作为演示:
const handle = Meteor.subscribe('data');
if (handle.ready()) {
const post = Posts.findOne(/**/);
if (typeof post === 'undefined') {
console.log('post does not exist');
}
}
关于javascript - 如何验证meteor helper中的查询结果并重定向到404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775646/
我是一名优秀的程序员,十分优秀!