发现()不明白

时间:2015-01-26 02:22:10

标签: mongodb meteor

我有两个问题和答案。我在Answers集合中有问题_id。这是经过验证的,因为我还有休斯顿软件包,可以让我看到我的所有馆藏和数据。

这可以按预期工作。我验证了数据是在答案集合字段questionId。

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
    }  
  }); 

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您的代码的其他部分可能有问题。 您应该可以使用Answers.find({question_id: Session.get('question_id')});。我为你在Meteorpad上创建了一个样本:Link

检查代码上的拼写错误。一些可能的错误:

  • 您确定questionId字段位于Answers集合中吗?
  • 您确定您在会话中使用的字段名称是questionId而不是question_id吗?