javascript - 关系猫鼬
问题描述
我有两个模式,其中一个依赖于另一个来保存。
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)
}
})
解决方案
我通常使用
idproduct: {
type: moongose.Schema.ObjectId,
required: true
},
这样帖子可以正常工作
推荐阅读
- html - 使用 CSS 分配角色,而不是将其添加到 HTML 标记中
- python - 找不到名为 vpc-xxxxxx-vpc-id 的导出。用户请求回滚
- python - TypeError:对象似乎不是类文件对象
- jenkins - 如何集成 Jenkins 和 Nexus(没有 maven)
- python - 如何在这个时间序列数据中为python中的熊猫使用LOCF
- java - 我无法通过另一台计算机连接到我的服务器
- vim - 获取 E73:在 vim 中启用可视模式时标记堆栈为空并使用箭头键选择单词
- python - Python:将字符串向量化为日期时间循环
- python - 生成镜像包和模块树的 rst 文件和目录
- google-chrome - 获取 chrome 扩展的校验和