首页 文章

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

提问于
浏览
1

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

  • 4

    默认情况下,Mongoose返回MongooseDocument的实例,该实例不直接公开您的数据并添加便利方法,如 populatesave

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

    如果需要获取可编辑文档, MongooseDocument 也会公开toObject函数 .

相关问题