如何获取我创建的本地MongoDB的当前ID?

时间:2015-09-25 14:52:34

标签: mongodb meteor

基本上,我试图在" null"中比较用户对问题的答案。或者将MongoDB本地化为之前声明的另一个MongoDB中的密钥。

我知道要获取声明的MongoDB(真正的数据库)的_id是调用this._id,这在我在浏览器控制台上运行控制台日志时很明显。

但是如何检索本地MongoDB的_id?

提前感谢您的帮助。

这是帮助代码:

    Template.question.events({
  "click .button": function(e){
    e.preventDefault;


    for (var i = 0; i < document.getElementsByName("choices").length; i++){

      if (document.getElementsByName("choices")[i].checked){
        var init = document.getElementsByName("choices")[i].value;
      }
    }
    Answers.insert({answer: init});

    if(Answers.find({answer: init}) === Quiz.find({_id: this._id}, {answer: init})){
      console.log("The answers match.");
    }
  }

});

代码的最后一部分是我试图比较&#34;答案&#34;中的答案字段。 DB,它是Quiz DB中答案字段的本地DB,它是声明的合法数据库。

修改

所以我使用了用户&#34; gdataDan&#34;建议并更改了我的代码以包含一个接收错误和结果参数的函数+我添加了一个else语句来查看事件助手实际上是否正常运行直到结束:

Template.question.helpers({
  title: function(){
    return Quiz.find();
  }
})

Template.question.events({
  "click .button": function(e){
    e.preventDefault;


    for (var i = 0; i < document.getElementsByName("choices").length; i++){

      if (document.getElementsByName("choices")[i].checked){
        var init = document.getElementsByName("choices")[i].value;
      }
    }

    var id = "";

    Answers.insert({answer: init}, function(error, result){
      if (error){
        console.log("error: " + error);
      } else if (result){
        id = result;
      }
    })

    if(Answers.find({_id: id}, {answer: init}) === Quiz.find({_id: this._id}, {answer: init})){
      console.log("The answers match.");
    } else {
      console.log("Something went wrong.");
    }
  }

});

结果是控制台日志打印出来&#34;出了问题,&#34;即使两个数据库之间的答案匹配。所以我觉得我称之为查找功能的方式或者ID不匹配。

修改#2:

我尝试在循环外声明init变量并尝试使用MongoDB的$ eq运算符并仍然得到&#34;出错了&#34;控制台中的消息。

1 个答案:

答案 0 :(得分:1)

如果没有错误,

collection.insert将返回ID。

var id = ''
Answers.insert({answer: init},function(error,result){
if(error) console.log('error: ' + error);
if(result) id = result;
});