我使用MongoDB,我想在Angular应用程序中使用Underscore.js。 我有一个模型“电子邮件”,其中包含以下字段:“subject”,“body”和“id”。
此电子邮件对象在浏览器控制台中如下所示:
$$hashKey
"005"
_id
Object { $oid="5478774a6a61734d8a000000"}
body
"Here is the sample conte...le ble ble. Nice email."
subject
"This is first template"
这是Angular中的控制器代码:
$scope.viewEmail = function(emailId) {
var email = _.findWhere(emailData.data.emails, { _id: emailId });
console.log(email);
};
所以,我只想查找一封包含特定id
的电子邮件 - 我想要的id
保存在本地变量emailId
中。
我应该这样做:_id.$oid: emailId
但是它会导致javascript控制台出现语法错误:“缺少:属性id之后”。
答案 0 :(得分: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);
答案 1 :(得分:0)
困难在于mongo objectid格式,它是一个包含字符串的异常JSON对象。
尝试_id: emailId
与_id.$oid: emailId
另一种选择:点符号通常需要它周围的引号"_id.$oid" : emailId
,尤其是那些带有美元符号的引号