У меня есть поле телефона в моем пользователе. дело в том, что я не могу отправить его на фронт (охрана и все). Поэтому я хотел создать виртуальное поле, чтобы узнать, дал ли этот пользователь свой телефон.
Здесь схема:
const userSchema = new Schema({
phone: { type: String}
},{
toObject: {virtuals: true },
toJSON: {virtuals: true }
});
Здесь виртуальная:
userSchema.virtual('hasPhone')
.get(function () {
return Boolean(this.phone);
})
И яиметь это, чтобы выбрать поля:
const publicFields = ['-phone'];
userSchema.statics.publicOnly = function (queryObject) {
return queryObject.select(publicFields);
}
И использовать это так:
getUserById(userId, all = false) {
const query = User.findById(userId);
return (!all ? User.publicOnly(query) : query).exec();
}
Если я отправлю в нем все = true, я получу телефон.
Итак, в моем выборе я исключаю телефон, но в этом случае у виртуального больше нет телефона, и он не может работать.
Моя цель - иметь hasPhone, но при этом защищать телефон
Спасибоза помощь