创建对象时是否可以在猫鼬模式中使用'default'属性复制对象属性?

编程入门 行业动态 更新时间:2024-10-11 05:23:51

创建对象时是否可以在猫鼬模式中使用'default'<a href=https://www.elefans.com/category/jswz/34/1771415.html style=属性复制对象属性?"/>

创建对象时是否可以在猫鼬模式中使用'default'属性复制对象属性?

我有一个Customer对象,具有多个属性,例如address,shippingAddress和billingAddress,如果客户未传递任何其他运送/计费地址数据,则默认情况下,我需要将地址数据复制到该属性中。

我已经有了一个解决方案,它可以工作,但也许有人可以采用一种更清洁的方法。我用default: this.address尝试了一下,但没有用。

/ model / customer.js

const customerSchema = new mongoose.Schema({
    address: {
        type: addressSchema,
        required: true,
    },
    shippingAddress: {
        type: addressSchema
    }
});

customerSchema.methods.setShippingAddress = function(address, shippingAddress) {
    return (shippingAddress) ? shippingAddress : address;
}

/ routes / customers.js

router.post('/', (req, res) => {
    let customer = new Customer({
        address: req.body.address
    });

    customer.shippingAddress = customer.setShippingAddress(req.body.address, req.body.shippingAddress);

    customer = await customer.save();
    res.status(200).send(customer);
});

因此,当API收到POST请求时,我实际上只是检查在请求中是否传递了shippingAddress属性,如果没有,那么我就用.shippingAddress =覆盖了address

回答如下:

您应该能够使用https://mongoosejs/docs/defaults.html#default-functions中所述的基于功能的默认值。您的情况将是

const customerSchema = new mongoose.Schema({
    address: {
        type: addressSchema,
        required: true,
    },
    shippingAddress: {
        type: addressSchema,
        default: function() { if(!this.shippingAddress) return this.address; }
    }
});

更多推荐

创建对象时是否可以在猫鼬模式中使用'default'属性复制对象属性?

本文发布于:2024-05-07 03:06:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754159.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:属性   对象   模式   default

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!