Javascript 试图从集合中获取随机游标-错误:发布函数只能返回游标或游标数组
我试图从一系列问题中随机发布一个问题。然而,我得到一个错误声明:error:Publish函数只能返回一个游标或游标数组。我如何更改下面的出版物,以便输出一个随机问题 Publications.jsJavascript 试图从集合中获取随机游标-错误:发布函数只能返回游标或游标数组,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我试图从一系列问题中随机发布一个问题。然而,我得到一个错误声明:error:Publish函数只能返回一个游标或游标数组。我如何更改下面的出版物,以便输出一个随机问题 Publications.js Meteor.publish('randomQuestions', function(){ var randomInRange = function(min, max) { var random = Math.floor(Math.random() * (max - min + 1)) +
Meteor.publish('randomQuestions', function(){
var randomInRange = function(min, max) {
var random = Math.floor(Math.random() * (max - min + 1)) + min;
return random;
};
var q = Questions.find().fetch();
var count = q.length;
var i = randomInRange(0, count);
return q[i]
});
路由器.js
this.route('gamePage', {
path: '/games',
waitOn: function() {
return [
Meteor.subscribe('randomQuestions'),
];
}
});
这是客户端的一个助手,用于获取随机问题
Template.gamePage.helpers({
displayRandomQuestion:
function() {
return Questions.find({});
}
});
最后是使用helper函数的html/css
<div class="questions">
{{#each displayRandomQuestion}}
{{> questionItem}}
{{/each}}
</div>
{{{每个问题}
{{>questionItem}
{{/每个}}
您可以为单个随机问题返回光标
Meteor.publish('randomQuestion', function (seed) {
var q = _.sample(Questions.find().fetch());
return Questions.find({_id: q && q._id});
});
您还应该使用随机种子进行订阅,以确保客户端不共享同一发布。下面的示例要求您meteor添加random
this.route('gamePage', {
path: '/games',
waitOn: function() {
return Meteor.subscribe('randomQuestion', Random.id());
}
});
然后,您可以在助手中返回该问题
Template.gamePage.question = function() {
return Questions.findOne();
};
并提供该数据作为模板的上下文
<div class="question">
{{> questionItem question}}
</div>
{{>问题项问题}
这是一个儿童游泳池问题,但是为什么您使用q&&q.\u id而不是仅仅使用q.\u id?如果q
未定义(从Minimongo获取的反应性数据可能会发生这种情况),那么使用q.\u id
将引发异常q&&q.\u id
产生相同的结果,并且是安全的。