2015-09-04 3 views
3

Я использую поддержку toJSON Mongoose как ниже:удалить одно свойство из мангуста поддержки «toJSON»

userSchema.set('toJSON', { getters: true, virtuals: true, minimize: false }) 

теперь возвращенного результата от метода toJSON() вызова мангуст объекта, я хочу, чтобы удалить некоторые чувствительные поля , Как это сделать?

В другой способ объяснить проблему:

Некоторые определенные поля, такие как «пароль», «маркер», который мы должны были бы только в запросе, но не возвращенного результата, как скрыть их от возвращения из всех видов запросов?

Обновление: Это, наконец, что я закончил с и работает как шарм:

userSchema.options.toJSON = { 
    getters: true, 
    virtuals: true, 
    minimize: false, 
    transform: function (doc, ret, options) { 
     delete ret.password 
     delete ret.authToken 
     return ret 
    } 
    } 

ответ

6

вы можете настроить, как toJSON работает на вашей схеме, как это:

/** 
    * adjust toJSON transformation 
    */ 
mySchema.options.toJSON = { 
    transform: function(doc, ret, options) { 
     ret.id = ret._id; 
     delete ret.password; 
     delete ret.token; 
     delete ret._id; 
     delete ret.__v; 
     return ret; 
    } 
}; 

doc является документом для сериализации, ret является простым объектом JS, который будет преобразован в формат JSON. Затем вы можете манипулировать ret, но вы хотите.

+0

Спасибо за подсказку. это помогло мне добраться до того, что я хотел. Благодаря! – Rana

+0

Ваш ответ мне тоже поможет. Кстати, вы знаете, как показывать эти скрытые поля, когда вы хотите, чтобы они отображались. – ryu

0

Это, как я удалить поле пароля.

userSchema.methods.toJSON = function() { 
    var obj = this.toObject(); 
    delete obj.password; 
    return obj; 
}