我有一个使用Mongoose 5.x的NODE.JS项目
我的模型具有toJSON
方法,可以完美删除_id
和__v
字段
mySchema.method("toJSON", function toJSON() {
const {__v, _id, ...object} = this.toObject();
return {
id: _id,
...object
};
});
因此,当从数据库中获取数据时:
const data = myModel.findOne({_id: id});
我得到一个序列化给用户的对象:
res.json(data);
它不包含必填的_id
和__v
字段。
问题是当我使用lean()
时:
const data = myModel.findOne({_id: id}).lean();
data
对象包含这些字段。
使用lean
但是我更希望找到一种在两种情况下都采用相同机制对数据对象进行清理的方法。
有什么建议吗?
谢谢。
答案 0 :(得分:0)
尝试此操作从文档中检索_id
myModel.findOne({_id: id}, function(err, doc) {
if(err)
return 'do something with this err'
console.log(doc._id)
})