我有以下的快速路线:
app.post('/users/me',(req, res) => {
var body = req.body.email;
User.find({
email: body
}).then((user) => {
res.send({user});
}, (e) => {
res.status(400).send(e);
});
});
在我的用户模型中,我使用了以下方法来限制返回到email和_id的结果:
UserSchema.methods.toJSON = function () {
var user = this;
var userObject = user.toObject();
return _.pick(userObject, ['_id', 'email']);
};
在我的大多数路线中,这正是我想要的,但是在这个特定的路线中,我想返回额外的字段。我如何覆盖\绕过模型方法并返回我的字段?
3条答案
按热度按时间ki0zmccv1#
我发现我可以创建一个额外的方法,并在res.send()中调用它。例如,如果我想添加密码作为返回的一部分,我可以创建一个新的方法:
然后在我的路由中,当我返回我调用的用户对象时
这将调用
toPrivateJSON()
方法并返回所需的其他字段。bqjvbblv2#
然后在模型方法中:
llmtgqce3#
您也可以在C:\server\node_modules\mongoose\lib\index.js中将覆盖值从非真更改为真,即if(_mongoose.models.hasOwnProperty(name)&& options.cache!==假&& overwriteModels!==真)更改!===真到=.=真