2014-12-01 72 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尤其是那些有美元符号