пн goose: выбрать свойство в заполненном не работает - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь отменить выбор свойства 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
    })
})

ответ в почтальон, мне нужно, чтобы поле владельца исчезло при заполнении туров

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...