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

时间:2016-09-02 15:32:53

标签: javascript node.js mongoose

我正在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 个答案:

答案 0 :(得分:4)

默认情况下,Mongoose会返回MongooseDocument的实例,该实例不会直接公开您的数据,并添加了populatesave

等便捷方法

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

如果您需要获取可修改的文档,

MongooseDocument也会公开toObject功能。