创建对象时是否可以在猫鼬模式中使用'default'属性复制对象属性?
创建对象时是否可以在猫鼬模式中使用'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; }
}
});
最新文章
- php调用接口及编写接口
- cocos Creator打包
- Platform 概述
- linux 下dump文件放在那里,怎么查看dump文件目录
- 软件复用的优点,举例描述支持软件复用的方法和内容。
- MSYS
- 强力删除文件或文件夹
- 大数定律的形象理解
- 图解Linux中EXT4与EXT3的区别
- ADFS 概念与基本开发介绍 (1)
- 浅谈Android之SurfaceFlinger相关介绍(一)
- TCP Socket与TCP 连接
- R型聚类分析
- 决定系数 均方误差mse
- 这些响应式网页测试工具确保你的设计万无一失
- 网页弹出对话框的几种代码
- curl命令详解 (实例使用方法)
- ST
- idea 出现中文乱码
- SQL——DDBC手册