实际上mongoose返回的数据并不是object,虽然你通过typeof判断类型是object,实际上是mongoose自己封装的一个对象,并且这个对象会对数据进行实时查询以保证其符合预定义的model,因为model中压根就没有isAdd属性,所以是无法增加的。
或者现在看来解决方法可以在model中预先定义isAdd字段,但是这个并不是没有业务都需要的,所以这种方法太糙了,果断放弃。幸好mongooes提供给我们函数来解决这个问题:lean()。代码如下:
- 方法1
Comment.findOne({
id,
},null,{
lean: true
}function (err,data) {
if(...){
data.isAdd = true;
}else{
data.isAdd = false;
}
});
- 方法2
Comment.findOne({
id
}).lean().exec(function (err,data) {
if(...){
data.isAdd = true;
}else {
data.isAdd = false;
}
});