[英]Getting undefined error trying to access nested object field using Array.prototype.filter
我正在使用下面的查询从 model 获取所有 forms;
query = await Form.find({}).populate('assigned_to');
查询结果如下;
[{
**
Some Other Fields **
assigned_to: {
links: [Array],
_id: 5 d7a903d8b8f3e0ced2dd308,
name: 'Test E 2',
email: 'te2@somedomain.com',
school: 5 d79e99b4d4df989ea771525,
department: 5 d79e99b4d4df989ea771526,
role: 'some_role',
__v: 0
},
},
**
OTHER OBJECT
**
]
运行 Array.prototype.filter;
waiting = query.filter(form =>
form.assigned_to._id == req.user._id);
尝试访问嵌套的assigned_to
的属性_id
会返回错误;
无法读取未定义的属性“id”
我理解错误的性质是,并非所有 forms 都同时有一个assigned_to
嵌套 object,这将导致该错误,因为仅在具有该嵌套对象的表单上运行过滤器。
如何改进此过滤器以应对并非所有 forms 都已分配到嵌套 object 的可能性?
编辑:为了简洁起见,我最初并没有指出它查询是一个对象数组。
回答您的问题“我如何改进此过滤器以适应不是 forms 已分配_to 嵌套 object 的可能性? ”。 确保查询返回一个数组。
这将确保键“assigned_to”是否存在。 您可以使用过滤器方法,例如:-
arr.filter(elem => (elem.assigned_to && elem.assigned_to._id &&
elem.assigned_to._id === req.user._id));
另一种方式
arr.filter(elem => {
if(elem.assigned_to && elem.assigned_to._id) {
if (elem.assigned_to._id === req.user._id) {
return elem;
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.