数组未添加到数组中的对象
Array not added to object in array
我想结合MongoDB中的两个数组:联系人对象数组和约会数组。
我目前的解决方案是查询所有联系人和约会,遍历每个数组,比较电子邮件,如果它们匹配,将每个约会添加到相应的联系人。
var contacts, appointments;
Contact.find(query, function(err, result1) {
if (err) {
console.log(err)
}
else {
contacts = result1;
Appointment.find({isArchived : false}, function(err, result2) {
if (err) {
console.log(err);
}
else {
appointments = result2;
for (var i=0; i<contacts.length;i++) {
contacts[i]["appointments"] = [];
for (var j=0; j<appointments.length;j++) {
if (contacts[i].email === appointments[j].owner) {
contacts[i].appointments.push(appointments[j]);
}
}
}
res.send(contacts);
}
});
}
});
联系人:
[{
email: "example1@example1.com"
}, {
email: "example2@example2.com"
}]
[{
email: "example1@example1.com",
start: "2015-01-01",
end: "2015-02-01"
}, {
email: "example1@example1.com",
start: "2015-02-01",
end: "2015-03-01"
}]
// Desired output
[{
email: "example1@example1.com",
appointments: [{
email: "example1@example1.com",
start: "2015-01-01",
end: "2015-02-01"
}, {
email: "example1@example1.com",
start: "2015-02-01",
end: "2015-03-01"
}]
}, {
email: "example2@example2.com",
appointments: []
}]
我知道这很乱,我也无法将约会数组附加到每个联系人。我只能给现有的对象键赋值。
所以这实际上是两个问题:1)为什么我不能将数组附加到现有联系人,2)什么是更有效的解决方案?
显然你不能直接扩展Mongoose的结果。要做到这一点,您必须在希望扩展的对象上调用. toobject()。
我很想有一个更干净的解决方案的建议,最好是一个只涉及一个mongodb调用,没有手动数组操作。
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象