实际上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;
    }
});
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐