基本上,我试图在" 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;控制台中的消息。
答案 0 :(得分:1)
collection.insert将返回ID。
var id = ''
Answers.insert({answer: init},function(error,result){
if(error) console.log('error: ' + error);
if(result) id = result;
});