答案较晚,但在定义架构时也可以尝试此操作。
schema.options.toJSON = {
transform: function(doc, ret, options) {
ret.id = ret._id;
delete ret._id;
delete ret.__v;
return ret;
}
};
请注意,这ret
是JSON编辑的对象,它不是猫鼬模型的实例。您将直接在对象散列上对其进行操作,而无需使用getter / setter方法。
然后:
Model
.findById(modelId)
.exec(function (dbErr, modelDoc){
if(dbErr) return handleErr(dbErr);
return res.send(modelDoc.toJSON(), 200);
});
编辑:2015年2月
因为我没有为缺少的toJSON(或toObject)方法提供解决方案,所以我将解释我的用法示例和OP的用法示例之间的区别。
OP:
UserModel
.find({})
.exec(function(err, users) {
var transformedUsers = users.map(function(user) {
return user.toJSON();
});
res.end(transformedUsers);
});
我的例子:
UserModel
.findById(someId)
.exec(function(err, user) {
if(err) return handleError(err);
if(null !== user) {
return res.end(user.toJSON());
}
});