我正在Express(Node.js)中编写一个路由,我从mongoose中提取一些数据 . 让我们说在某些时候,我需要比较employee._id是否在坏员工ID的数组中::
let employees = await EmployeeModel.find().exec();
employees.forEach(function (employee) {
if (arrayOfBadEmployees.indexOf(employee._id) !== -1) {
employee.isBad = true;
}
});
console.log(employees);
console.log(employees[0].isBad);
这是我的输出:
[ { __v: 0, name: 'Employee X', _id: 1 },
{ __v: 0, name: 'Employee Y', _id: 3 },
{ __v: 0, name: 'Employee Z', _id: 5 } ]
true
所以当我在console.log中看不到'isBad'属性时整个数组/对象,但这个属性仍然存在?当我用propertyIsEnumerable('isBad')检查时,它表示正确 .
1 回答
默认情况下,Mongoose返回MongooseDocument的实例,该实例不直接公开您的数据并添加便利方法,如
populate
或save
您可以使用lean选项来获取原始对象 .
如果需要获取可编辑文档,
MongooseDocument
也会公开toObject函数 .