Mongoose返回数据修改中遇到的坑
实际上mongoose返回的数据并不是object,虽然你通过typeof判断类型是object,实际上是mongoose自己封装的一个对象,并且这个对象会对数据进行实时查询以保证其符合预定义的model,因为model中压根就没有isAdd属性,所以是无法增加的。或者现在看来解决方法可以在model中预先定义isAdd字段,但是这个并不是没有业务都需要的,所以这种方法太糙了,果断放弃。幸好mon
·
实际上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;
}
});

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