2015-01-26 4 views
0

У меня есть вопросы и ответы на две коллекции. У меня есть вопросы _id в коллекции Answers. Это подтверждено, потому что у меня также есть пакет Houston, который позволяет мне видеть все мои коллекции и данные.Найти() непонятно

Работает так, как ожидалось. Я проверил данные в поле ответов вопросов.

Questions.findOne(Session.get('question_id')); 

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

Answers.find({questionId: Session.get('question_id')}); 

Это шаблон template.events.

Meteor.call("addQuestion",questionText,function(error, question_id){ 
    if (error) { 
     alert("Server could not save your question at this time."); 
     Session.set('question_id',""); 
     Session.set('adding_answers',false); 
    } else { 
     Session.set('question_id',question_id); // Save the question _id 
     Session.set('adding_answers',true); // Causes template newAnswers to be displayed 
     template.find('.inputQuestion').value = ""; // Clear prior question value 
    } 
    }); 
+0

является question_id переменной? если да, можете ли вы включить код для того, как он определяется? – Goodword

+0

Не возражаете ли вы создать образец своего кода на [MeteorPad] (http://meteorpad.com), чтобы мы могли помочь вам устранить его? – lucascurti

+0

question_id - это переменная сеанса. Я добавил пример выше. – pld32

ответ

0

Ну первое, на мой взгляд, не сделать Meteor.call, только для вставки, лучше сделать так.

Question.insert({questionText:questionText},function(error, question_id){ 
    if (!error) { 
     Session.set('question_id',this._id); // Save the question _id 
     Answers.insert({questionId:question_id}) 
     Session.set('adding_answers',true); // Causes template newAnswers to be displayed 
     template.find('.inputQuestion').value = ""; // Clear prior question value 
    } else { 
     alert("Well i know this is kinda weird, but.. something wrong happened"); 
    } 
    }); 

Конечно, с разрешения разрешить/запретить.

Теперь. почему findOne, не работает.

Теперь ответы на поиск будут выглядеть следующим образом.

Tracker.autorun(function(){ 
      var findAnswers = Answers.find({question:Session.get('question_id')}) 
    console.log(findAnswers); 
    } 

Таким образом, это должно сработать.

Примечание: если вы хотите сохранить Meteor.call, просто скопировать вставить findOne

+0

Вопросы.findOne ({_ id: Session.get ('question_id')}); делает работа frind. Кажется, что проблема - Answers.find ({questionId: Session.get ('question_id')}) ;. – pld32

+0

проверить обновление, в примере кода, я не видел, где вы вставляете ответы в ответ, но я думаю, что наиболее корректно его разместить на обратном вызове '(! Err). – Ethaan

0

Там может быть что-то неправильно на другой части вашего кода. Вы должны иметь возможность использовать Answers.find({question_id: Session.get('question_id')});. Я создал образец для Meteorpad для вас: Link

Проверьте наличие опечаток на своем коде. Возможные ошибки:

  • Вы уверены, что поле questionId находится в коллекции ответов?
  • Вы уверены, что название поля questionId, а не question_id, как вы использовали на сессии?
Смежные вопросы