2017-05-07 37 views
0

我試圖返回保存的對象作爲請求響應,但我不希望整個對象返回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' }回來嗎?

+2

爲什麼不只是'res.send({name:r.name})'? – Mikey

+0

天啊!爲什麼我沒有這樣想!這對我有用。但是,我可以用'mongoose'配置只返回'name'嗎?只爲好奇 – Lai32290

回答

1

您可以爲此編寫方法:

在用戶模式中加入這個方法: 使用這種方法,你可以控制你返回給客戶端

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

什麼,並使用它像這

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

謝謝,我認爲這種方式對我的情況有好處 – Lai32290

0
// 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);