我有两个架构,其中一个要依赖另一个来保存。
const OrderSchema = new moongose.Schema({
product: {
type: moongose.Schema.Types.ObjectId,
ref: 'Product',
required: true
},
quantity: {
type: Number,
required: true,
default: 1,
},
total_price: {
type: Number,
}
})
OrderSchema.pre('save', async function(next) {
this.total_price = product.price * quantity
next()
})
const Order = moongose.model('Order', OrderSchema)
另一个:
const ProductSchema = new moongose.Schema({
name: {
type: String,
required: true
},
price: {
type: Number,
required: true
},
description: {
type: String
},
photo: {
data: Buffer,
contentType: String
}
})
const Product = moongose.model('Product', ProductSchema)
但是当我尝试保存一个订单,而一个产品正在数据库中退出时
{
"product":"5cae6ff5d478882ed8725911",
"quantity":3
}
显示错误:错误:ReferenceError:产品未定义
这是我保存新订单的控制器:
router.post('/register', async (req, res) => {
try {
const order = await Order.create(req.body)
return res.send({ order })
}
catch (error) {
console.error('Error:', error)
}
})
答案 0 :(得分:0)
我通常使用
idproduct: {
type: moongose.Schema.ObjectId,
required: true
},
通过这种方式帖子可以正常工作
答案 1 :(得分:0)
大声笑,我发现了错误:
OrderSchema.pre('save', async function(next) {
this.total_price = product.price * quantity
next()
})
我忘了使用“ THIS”,正确:
OrderSchema.pre('save', async function(next) {
this.total_price = this.product.price * this.quantity
next()
})
嘿嘿,对不起...