1
基本上,我試圖比較用戶對「null」或本地MongoDB中問題的回答,以及之前聲明的另一個MongoDB中的密鑰。如何獲取我創建的本地MongoDB的當前ID?
我知道獲得聲明的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.");
}
}
});
代碼的最後一部分是我試圖回答域比較在「答案」 DB,這是當地DB的答案場競猜DB,這是聲明的合法數據庫。
編輯:
所以我使用的用戶「gdataDan」的建議,改變了我的代碼包含一個函數採取在錯誤和結果參數+如果事件幫手實際運作我添加了一個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.");
}
}
});
原來,控制檯日誌打印「出事了」,即使答案都數據庫之間的匹配。所以我覺得我調用find函數的方式或者id本身不匹配。
編輯#2:
我想聲明外循環初始化變量,並使用MongoDB的的$ eq操作符和仍然獲得在控制檯「出事了」的消息試過。
你有一些代碼或僞代碼來解釋你的邏輯嗎?請發佈[MCVE](http://stackoverflow.com/help/mcve)。 –
添加了代碼。 –
關於爲什麼答案不匹配的問題,你的第二個問題是因爲你使用find來返回數據的遊標而不是數據本身。遊標不一樣。在兩個查詢上嘗試使用findOne。例如:var myanswers = Answers.findOne(id,{fields:{answer:init}});然後您可以直接訪問數據。另外,請嘗試在瀏覽器控制檯中運行這些查詢以查看它們提供的輸出類型。這將有助於您編寫比較代碼。 – danSiebes