2015-09-25 51 views
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操作符和仍然獲得在控制檯「出事了」的消息試過。

+1

你有一些代碼或僞代碼來解釋你的邏輯嗎?請發佈[MCVE](http://stackoverflow.com/help/mcve)。 –

+0

添加了代碼。 –

+0

關於爲什麼答案不匹配的問題,你的第二個問題是因爲你使用find來返回數據的遊標而不是數據本身。遊標不一樣。在兩個查詢上嘗試使用findOne。例如:var myanswers = Answers.findOne(id,{fields:{answer:init}});然後您可以直接訪問數據。另外,請嘗試在瀏覽器控制檯中運行這些查詢以查看它們提供的輸出類型。這將有助於您編寫比較代碼。 – danSiebes

回答

1

collection.insert如果沒有錯誤將返回ID。

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