Как вызвать значение мангуста по умолчанию, когда атрибут равен нулю - PullRequest
1 голос
/ 22 апреля 2019

В моей схеме я определил значение по умолчанию для атрибута:

const patientSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    lastName: {type : String, required: true},
    firstName: {type : String, required: true},
    phone: String,
    mobile: String,
    email: String,
    subscriptionDate: {type : Date, default: Date.now}
});

Я бы хотел, чтобы оно использовалось, когда переданное значение равно нулю.Я знаю, что это работает, только если оно не определено, но я думаю, что для этого есть чистый обходной путь.

Пока я делаю это, но я должен сделать это и для создания, и для обновления, и я чувствую, что это грязно:

const patient = new Patient({
        _id: new mongoose.Types.ObjectId(),
        lastName: req.body.lastName,
        firstName: req.body.firstName,
        phone: req.body.phone,
        mobile: req.body.mobile,
        email: req.body.email,
        subscriptionDate: req.body.subscriptionDate ? req.body.subscriptionDate : undefined,
        gender: req.body.gender,
        birthDate: req.body.birthDate,
        nbChildren: req.body.nbChildren,
        job: req.body.job,
        address: req.body.address
    });
    patient.save()
        .then(result => {
            console.log(result);
            res.status(201).json({
                message: 'Handling POST requests to /patients',
                createdPatient: patient
            });
        })
        .catch(err => {
            console.log(err);
            const error = new Error(err);
            next(error);
        });

1 Ответ

0 голосов
/ 22 апреля 2019

Значения по умолчанию для Mongoose работают только в том случае, если для ключей объекта вашего документа эти поля не определены. [empty,null] - допустимые значения. Поскольку вы обрабатываете во время создания объекта, это единственный способ, который я вижу здесь, то есть либо вы можете назначить undefined, либо вы можете удалить это свойство из объекта.

...