如果值为空,则忽略键

我正在创建一个mongoose条目,这是我的模式。

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,
    },
});

Coupon是可选的。创建新订单的代码是。

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(),
        });

然而,当coupon是一个空字符串时,我得到的结果是: MongooseError [CastError]: Cast to ObjectID failed for value "" at path "coupon"

我需要在创建对象时,删除这个键和值,创建订单时。

如果优惠券代码为空,我如何删除这个键?

先谢谢你

解决方案:

问题是你试图在数据类型objectID中加入一个空字符串值。

一个可能的解决方案是在你的代码中使用下面的条件。

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

这将会把coupon设置为null 如果body.coupon.code是””。

本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/7998.html

(0)
上一篇 2022年6月9日 上午6:32
下一篇 2022年6月9日 上午6:32

相关推荐

发表评论

登录后才能评论