保存后如何限制返回的属性?

Posted

技术标签:

【中文标题】保存后如何限制返回的属性?【英文标题】:How to limit property returned after save? 【发布时间】:2017-10-05 19:28:36 【问题描述】:

我正在尝试将保存的对象作为请求响应返回,但我不希望 Model.save() 函数返回整个对象,它返回的信息比我想要的多,例如 _id__v

我的请求代码是这样的:

function insertUser(req, res) 
   const userName = req.Body.name;

      User.save( name : userName )
         .then(r =>   
            res.send(r);
         );

它正在休耕JSON 归还给我:


    _id: 590f529976aa6142d91870b7,
    name: 'blablabla'
    __v: 4

如何将其设置为仅返回 name : 'blablabla'

【问题讨论】:

为什么不直接做res.send( name: r.name ) 天哪!为什么我没有这样想!这对我有用。但是我可以通过mongoose 配置只返回name 吗?只是为了好奇 【参考方案1】:
// transform for sending as json
function omitPrivate(doc, obj) 
    delete obj.__v;
    delete obj.id;
    return obj;


// schema options
var options =  toJSON:  transform: omitPrivate  ;

// schema
var schema = new Schema(
    name:  type: String, required: true ,
, options);

【讨论】:

【参考方案2】:

您可以为此编写方法:

在您的用户架构中添加此方法: 使用这种方法,您可以控制返回给客户端的内容

userSchema.methods.getPublicFields = function() 
  return 
    name: this.name
  ;
;

并像这样使用它

User.save( name : userName )
     .then(r =>   
        res.send(r.getPublicFields);
     );

【讨论】:

以上是关于保存后如何限制返回的属性?的主要内容,如果未能解决你的问题,请参考以下文章

vue中,前端如何保存后端的接口返回值

保存后如何返回上一个控制器并刷新该控制器

如果管理员在cakephp3.x中将其停用,如何限制db中的数据保存?

使用node js mongoose保存后如何返回json数据

如何在 Ember.js 中保存具有“日期”类型属性的模型?

hosts修改如何保存