我们在使用Mongoose
的时候,或许大家都会发现回调返回的result
无法进行修改,Google
了一下,现把方法记录下来供有需要的同学参考一下。
代码我就不贴了,能遇到这个问题的人说明对mongoose
语法都是有一定了解的了,那么下面就直接说这种现象的原因。
实际上
mongoose
返回的数据并不是object
,虽然通过typeof
判断类型是Object
,但其实mongoose
自己封装的一个对象,并且这个对象会对数据进行实时查询以保证其符合预定义的model
,而无论添加删除model
都不会改变,所以设置无效。
那解决的方法是:
在返回的result对象调用
toObject()
或toJSON()
方法,则可以对它进行修改。
注意:
本质上使用
toObject
和toJSON
都是可以的,其实这两个方法一般来说是没区别的,而如果要讲究区别的话,那就是如果使用toJSON
的话,对生成的对象用JSON.stringify
,此时用的是这个对象本身的toJSON
方法来序列化,而不是原生对象Object
的方法。
参考英文:
From the MDN document, if an object has the toJSON property as a function, JSON.stringify will use the toJSON function to serialize the object instead of the object itself.