我有一张桌子~8000 quiz questions
。它们分为25 categories
. 每个类别都有一个属性max_questions
,它告诉我必须选择多少问题randomly
才能生成测验。
例如
Category 1 -> 2 questions
Category 2 -> 3 questions
Category 3 -> 1 question
我想出了一个解决方案,但我需要大约。2 秒执行。
r.table('categories').pluck('id', 'max_questions').orderBy('id').run(conn, function(err, cursor) {
if(err) return next(new Error(err.msg));
cursor.toArray(function(err, categories) {
if(err) return next(new Error(err.msg));
async.concat(categories, function(category, callback) {
r.table('questions').filter({category_id: category.id }).sample(category.max_questions).run(conn, callback);
}, function(err, questions) {
if(err) return next(new Error(err.msg));
res.json(questions);
});
});
});
有没有更快的方法来使用 RethinkDB 检索问题?为一次测验提出 25 个请求并调用 25 次.sample()
对我来说听起来并不好。
我真的很感谢你的帮助!