2014-12-01 42 views
1

我使用MongoDB的,我想在我的角度應用程序使用Underscore.js。 我有一個模型「電子郵件」與領域:「主題」,「身體」和「身份證」。下劃線的findWhere和MongoDB對象

此電子郵件對象看起來像這樣在瀏覽器控制檯:

$$hashKey 
    "005" 

_id  
    Object { $oid="5478774a6a61734d8a000000"} 

body   
    "Here is the sample conte...le ble ble. Nice email." 

subject  
    "This is first template" 

這是角控制器代碼:

$scope.viewEmail = function(emailId) { 

    var email = _.findWhere(emailData.data.emails, { _id: emailId }); 

    console.log(email); 
}; 

所以,我只是想找到與特定id電子郵件 - 我想要得到的id被保存在一個局部變量emailId

我應該做這樣的事情:_id.$oid: emailId但它會導致一個語法錯誤在JavaScript控制檯:「丟失:物業編號後」。

+0

'findWhere'不適合,如果你有一個目標是挖掘對象 – apneadiving 2014-12-01 19:50:43

回答

1

這將做的工作: _.find(list, predicate, [context])

這裏是一個小提琴: http://jsfiddle.net/bqegdy2t/

var emailData = { 
    data: { 
     emails: [ 
      { _id: { $oid: "someId" }, body: "Hello Every Body1" }, 
      { _id: { $oid: "someOtherId" }, body: "Hello Every Body2" }, 
     ] 
    } 
}; 

var emailId = "someId"; 
var email = _.find(emailData.data.emails, function(email) { 
       return email._id.$oid === emailId; 
      }); 

console.log(email); 
0

的難點在於蒙戈OBJECTID格式是一個不尋常的含JSON對象的字符串。

嘗試_id: emailId_id.$oid: emailId

另一種選擇:點符號往往需要周圍的引號"_id.$oid" : emailId尤其是那些有美元符號