1

のテーブルがあります~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 を使用して質問をすばやく取得する方法はありますか? 1 つのクイズで 25 回のリクエストと 25 回の呼び出し.sample()は、私にはよく聞こえません。

あなたの助けに本当に感謝します!

4

1 に答える 1