【发布时间】:2022-02-08 20:55:55
【问题描述】:
我在 node.js 中使用猫鼬。我有以下架构。
const CustomerSchema = new mongoose.Schema({
...
email: {
type: String,
required: true,
lowercase: true,
trim: true
},
addresses: [
{
addressType: {
type: String,
enum: [ 'personal', 'shipping', 'billing' ]
},
street: {
type: String,
required: true,
trim: true
},
streetNumber: {
type: String,
trim: true
},
floor: {
type: String,
trim: true
},
apartament: {
type: String,
trim: true
},
cp: {
type: String,
required: true,
trim: true
},
district: {
type: String,
trim: true
},
city: {
type: mongoose.Schema.ObjectId,
ref: 'City',
required: true
}
}
]
});
我想使用 "virtuals" 在数组地址中的每个对象中“添加”一个新字段?
我如何使用虚拟来做到这一点?有可能吗?
我可以使用相同的结果,但我想使用 virtuals。
const customerDB = await Customer.findById(idCustomer).lean()
customerDB.addresses = customerDB.addresses.map((address) => ({
...address,
addressDesc: mapTypeAddressDescription(address.addressType)
}));
非常感谢!
【问题讨论】:
-
我最近回答了类似的问题。也许你想看看它,关于如何创建一个高效的文档 - stackoverflow.com/questions/71013664/…
-
@SomeoneSpecial 您好,感谢您的回复。我阅读了您的答案,这是有道理的,但在这种情况下,我看到将地址存储在 Customer 集合中。我可以将它分成不同的集合,但我不确定它的好处。