Я пытаюсь отменить выбор свойства owner в объекте 'tours', который я практически заполнил в пользовательской схеме. Но так как я фактически заселил владельца в схему тура, она не работает. Я пробовал разные способы, но это не работает.
1) модель пользователя
let userSchema = new mongoose.Schema({
name: {
type: String,
unique: true,
required: true,
maxlength: 15,
minlength: 5
},
password: {
type: String,
required: true,
minlength: 5
}
})
userSchema.set('toObject', { virtuals: true })
userSchema.set('toJSON', { virtuals: true })
userSchema.virtual('tours', {
ref: 'Tour',
localField: '_id',
foreignField: 'owner'
})
2) модель тура
let tourSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
owner: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
})
tourSchema.pre(/^find/, function(next) {
this.populate({
path: 'owner',
select: 'name'
})
next()
})
3) контроллер пользователя
exports.getUser = catchAsync(async (req, res, next) => {
let user = await User.findById(req.params.id).populate({path: 'tours', select: {'owner': 0}})
res.status(200).json({
status: 'success',
total: user.length,
user
})
})
ответ в почтальон, мне нужно, чтобы поле владельца исчезло при заполнении туров