Игнорировать ключ, если пустое значение - PullRequest
0 голосов
/ 26 апреля 2020

Я создаю запись mon goose, и это моя схема:

const OrdersSchema = new mongoose.Schema({
    user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Users",
        required: true,
    },
    currency: {
        type: String,
        required: true,
    },
    country: {
        type: String,
        required: true,
    },
    rate: {
        type: Number,
        required: true,
    },
    amount: {
        type: Number,
        required: true,
    },
    coupon: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Coupons",
    },

    subtotal: {
        type: Number,
        required: true,
    },
    total: {
        type: Number,
        required: true,
    },
    recipient: {
        type: mongoose.Schema.Types.ObjectId,
        required: true,
    },
    status: {
        type: String,
        required: true,
        default: "On-hold",
    },
    payment: {
        type: Object,
        required: true,
    },
    shortId: {
        type: String,
        required: true,
    },
    createdAt: {
        type: Date,
        default: Date.now,
        required: true,
    },
});

Купон не является обязательным. Код для создания нового заказа:

const order = await Orders.create({
            user: req.id,
            currency: body.selectedCountry,
            country: body.selectedCountry,
            rate: rate.rates[body.selectedCountry],
            amount: body.amount,
            coupon: body.coupon.code,
            subtotal: body.subtotal,
            total: body.total,
            recipient: body.recipient,
            payment: body.paymentData,
            shortId: shortid.generate(),
        });

Однако, когда купон представляет собой пустую строку, я получаю MongooseError [CastError]: Cast to ObjectID failed for value "" at path "coupon"

Мне нужно удалить этот ключ и значение из создания объекта , при создании заказа.

Как удалить этот ключ, если код купона пуст?

Заранее спасибо

1 Ответ

0 голосов
/ 26 апреля 2020

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

Возможное решение этой проблемы - использовать в своем коде условие ниже:

coupon: body.coupon.code ? body.coupon.code : null

При этом значение купона будет нулевым, если body.coupon.code равен "".

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