【发布时间】:2016-06-09 15:21:50
【问题描述】:
我正在使用流星厨师基地,但我在使用 react-komposer 时遇到了反应性问题。我有一个订阅调用,它从 url (lectureId, courseId) 获取 id,以首先查找(并在需要时创建)具有这些 id 和 currentQuestion 字段的 userLecture 文档,它用于获取当前的 Question 订阅。我稍后更新了 currentQuestion id,但问题订阅在硬页面刷新之前不会更新。当输入实际上没有改变时,我怎样才能使订阅反应?
const composer = (params, onData) => {
let subscription = Meteor.subscribe('questionFromSlugs', params.courseSlug, params.lectureSlug);
if (subscription.ready()) {
const question = Questions.findOne();
const userLecture = UserLecture.findOne();
onData(null, { question });
}
};
export default composeWithTracker(composer, Loading)(QuizQuestion);
这是流星订阅:
Meteor.publish('questionFromSlugs', function(courseSlug, lectureSlug){
check(courseSlug, String);
check(lectureSlug, String);
check(this.userId, String);
let user = this.userId;
let lecture = Lectures.findOne({courseSlug: courseSlug, slug: lectureSlug});
let course = Courses.findOne({slug: courseSlug});
if (lecture != null && course != null) {
var thisLectureScore = UserLecture.find({
userId: user,
lectureId: lecture._id
}).count();
if (thisLectureScore == 0){
UserLecture.insert({
userId: user,
courseId: course._id,
lectureId: lecture._id,
lectureScore: 0,
currentLevel: 1
});
}
let userLecture = UserLecture.findOne({
userId: user,
courseId: course._id,
lectureId: lecture._id
});
if (userLecture != null){
return [
Questions.find({_id: userLecture.currentQuestionId}),
UserLecture.find({
userId: user,
courseId: course._id,
lectureId: lecture._id
})
]
}
}
});
【问题讨论】:
标签: javascript meteor reactjs