为什么我看不到Mongoose文档上的所有JS对象属性?

我正在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 

所以当我无法看到'isBad'属性时,我console.log整个数组/对象,但这个属性仍然存在? 当我检查与propertyIsEnumerable('isBad')它说的是真的。

Mongoose在默认情况下返回一个MongooseDocument实例,它不直接公开你的数据,并添加了一些便利的方法,如populatesave

您可以使用lean选项来获取原始对象。

如果您需要获取可编辑的文档, MongooseDocument还会公开一个toObject函数。