Пізня відповідь, але ви також можете спробувати це при визначенні вашої схеми.
schema.options.toJSON = {
transform: function(doc, ret, options) {
ret.id = ret._id;
delete ret._id;
delete ret.__v;
return ret;
}
};
Зверніть увагу, що ret
це об'єкт JSON, і це не екземпляр моделі мангуста. Ви будете працювати з ним прямо на хешах об'єктів, без геттерів / сетерів.
І потім:
Model
.findById(modelId)
.exec(function (dbErr, modelDoc){
if(dbErr) return handleErr(dbErr);
return res.send(modelDoc.toJSON(), 200);
});
Редагувати: лютий 2015 р
Оскільки я не надав рішення відсутніх методів toJSON (або toObject), я пояснити різницю між моїм прикладом використання та прикладом використання 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());
}
});
JSON.stringify(users);
оскільки документи, що повертаються,lean()
є звичайними об'єктами JS?