不能将属性添加到mongoose函数中的对象

我有一个函数从数据库获取一些数据,并将其绑定到一些variables:

exports.getAccDoc = function(req, res, send, next) { var AccDoc = require('../models/accdoc'); AccDoc.find({ startup_id: req.startup.startup_id }).exec().then(function(accDocs) { vm.accDocs = accDocs; //I'm using vm in my view console.log(vm.accDocs); //logs a array that contains one object console.log(vm.accDocs[0]); //you know vm.accDocs[0].test = 'TEST'; //trying to add some property to the object console.log(vm.accDocs[0].test); //logs TEST like it should be console.log(vm.accDocs[0]); //logs an object, But it doesn't contain test property send(res); //sending vm to view }); }; 

为什么我的对象在添加test属性后没有改变?

(我可以改变一个属性的现有值,但不能添加新的属性)

这是因为从Mongoose返回的结果是一个Mongoose对象,而不是一个普通的JavaScript对象。 您需要使用lean方法来获得可以玩的普通对象。

 AccDoc.find({ startup_id: req.startup.startup_id }).lean().exec().then(function(accDocs) { ...