2014-02-04 7 views
0

У меня есть коллекция под названием Вопросы.Извлечение mongodb один за другим

Я хочу, чтобы принести первый вопрос, а затем, когда пользователь нажимает на кнопку, дать ему следующий ..

Так что я выборки первый пункт так:

Template.home.user_questions = function() { 
return Questions.find({}, {sort: {answer1:{'$ne': ''}}, limit: 1}); 
} 

И я получать щелчок пользователя, как это:

'click input' : function() { 
    Questions.update(this._id, {$inc: {value1: 1}}) 
    // now show him next item 
} 

Но я не могу показаться, чтобы выяснить, как показать следующий пункт, так как I hasNext() и следующий() методы не поддерживаются метеора

+1

Непонятно, каковы правила игры. Я показываю пользователю следующий вопрос, на который есть ответ, который он еще не видел? Если да, то должны ли они сохраняться на всех сеансах? Должен ли я больше не видеть тот же вопрос? –

+0

Вы правы, я был недостаточно ясен. В самом деле, пользователь не должен видеть вопрос, который он уже видел, и он должен сохраняться на всех сеансах (я еще не знаю об этом) – Alucard

ответ

1

Вы можете использовать skip.

Template.home.user_questions = function() { 
    var skip = Session.get("skip") || 0; 
    return Questions.find({}, {sort: {answer1:{'$ne': ''}}, limit: 1, skip: skip}); 
} 

Затем, когда вы хотите, чтобы перейти к следующему вопросу, увеличить значение сеанса пропуска на 1.

например
Session.set("skip", (Session.get("skip") || 0) ++); 

Это должно реактивно перейти к следующему вопросу, вплоть до последнего.

+0

Использование сеансов, приятное мышление;) С другой стороны, я получил ошибку на Session.set(): 'Недопустимая левая сторона в присваивании' и должна была заменить' ++ 'на' + 1', чтобы заставить ее работать – Alucard

Смежные вопросы