【发布时间】:2017-12-11 23:11:25
【问题描述】:
我有一个收藏,questions。
我通过 FlowRouter 将用户从一个路由发送到另一个路由。
第一条路线使用questions中的所有文档,但只有一个字段:_id。
第二条路线只需要一个文档,但需要所有字段。
尽管在第二条路由中进行了新订阅,但只能访问旧的 _id 字段(直到用户手动刷新)。
第一个路由的组件订阅如下:
getMeteorData() {
const questionsHandle = Meteor.subscribe('questions')
return {
questions: Questions.find().fetch()
}
}
发布只发布_id字段:
Meteor.publish('hspUserQuestionsFromPracticeSet', function() {
return Questions.find({}, {fields: {_id: 1}})
})
路由更改只需使用FlowRouter.go(newRoute)(我正在使用一些更新版本的 Flowrouter-SSR)。
第二条路线:
getMeteorData() {
const questionHandle = Meteor.subscribe('questionById', this.props.questionId)
return {
question: Questions.findOne(),
questionReady: questionHandle.ready()
}
},
第二次发表:
Meteor.publish('questionById', function(questionId) {
return Questions.find({_id: questionId})
})
当路由切换发生时,questions 中的所有文档都已被订阅,因此Questions.findOne() 会从该列表中找到第一个文档。所以我的文档都错了,只有一个字段。
我该如何解决这个问题?我已尝试取消订阅 componentWillUnmount 并使用仅包含 this.stop() 的新出版物,但这不起作用。
【问题讨论】:
-
在渲染前您在哪里检查新订阅是否准备就绪?